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

タイムスタンプの値を比較し、変更された場合はそれぞれに値を割り当てます

    要件を正しく理解している場合は、week_switch 結果の行は、タイムスタンプではなく、製品のみに依存します。

    したがって、サブクエリで計算します。

      SELECT product,
             (CASE 
              WHEN MIN(plan_week) <> MAX(plan_week) THEN 'yes' 
              ELSE 'no' END)  AS week_switch
        FROM operations
       GROUP BY product
    

    次に、そのサブクエリを詳細に参加させます(フィドル

    WITH switched AS (
      SELECT product,
             CASE
             WHEN MIN(plan_week) <> MAX(plan_week) THEN 'yes'
             ELSE 'no' END AS week_switch
        FROM operations
       GROUP BY product
    )
    SELECT
    operations.time_stamp,
    operations.product,
    operations.plan_week,
    switched.week_switch
    FROM operations
    LEFT JOIN switched ON operations.product = switched.product
    WHERE time_stamp in ('2020-01-01', '2020-03-15')
    GROUP BY 1,2;
    


    1. フィールドへの外部キーのリファクタリング

    2. BaseColumnsで_COUNTを使用する方法

    3. Mysql Workbench GUIでテーブルの内容を表示するにはどうすればよいですか?

    4. WHERE句のフィールドの順序はMySQLのパフォーマンスに影響しますか?