sql >> データベース >  >> RDS >> Mysql

注文によるグループ化

    したがって、コメントとSqlFiddleの追加から、実際には、プラットフォームごとにUSを優先するパーティション化された行番号を作成し、最初のレコードを選択したいようです。 mysqlでパーティション化された行番号を実行する1つの方法は、ここで変数を使用することです。例:

    SELECT
      territory_id
      ,platform_type_id
      ,store_url
    FROM
    ( SELECT
        *
        ,@PlatFormRowNum:= IF(@prevplatform = platform_type_id, @PlatFormRowNum + 1, 1) as PlatformRowNum
        ,@prevplatform:= platform_type_id
      FROM
        main_itemmaster m
        CROSS JOIN (SELECT @prevplatform:='',@PlatFormRowNum=0) var
      ORDER BY
        platform_type_id
        ,CASE WHEN territory_id = 'US' THEN 0 ELSE 1 END
        ,territory_id
    ) t
    WHERE
      t.PlatformRowNum = 1
    ORDER BY
      t.platform_type_id
    

    SQLフィドル: http://sqlfiddle.com/#!9/81c3b6/12 >

    基本的に、これは行番号をプラットフォームごとに分割し、他の地域の前にUSを注文してから、各プラットフォームの最初の行を選択します。 1つの質問/トリックは、米国がプラットフォームで利用できない場合に、territory_idのアルファベットの昇順でどちらを返すかをどのように選択するかです。




    1. ColdFusion-アラビア語/ペルシア文字をmysqlに挿入する

    2. UTCでDATETIMEとTIMESTAMPを適切に処理するためのJDBC-mysqlドライバー設定とは何ですか?

    3. Oracle DB Server + APEX + ORDS + JasperReportsをゼロから(パート4)

    4. psycopg2を使用したpostgresqlDBの作成