Associate Data Practitioner 問題の一覧 › 2. データ分析とプレゼンテーション
日別売上テーブルで、各日の売上と直前日の売上の差分を求めたい。適切なSQLはどれか。
- SELECT dt, sales - LAG(sales) OVER (ORDER BY dt) AS diff FROM t
- SELECT dt, sales - FIRST_VALUE(sales) OVER (PARTITION BY dt) AS diff FROM t
- SELECT dt, sales - SUM(sales) AS diff FROM t GROUP BY dt
- SELECT dt, sales - LEAD(sales) OVER (ORDER BY dt DESC) AS diff FROM t WHERE dt = dt - 1
💡 答えと解説を見る
答え:A(SELECT dt, sales - LAG(sales) OVER (ORDER BY dt) AS diff FROM t)
LAG は直前の行の値を参照するウィンドウ関数で、日付順に並べれば前日との差分が得られる。FIRST_VALUE は先頭行の値、GROUP BY の集計では前日の値を参照できず、Dは構文・論理とも不適切。
LAG は直前の行の値を参照するウィンドウ関数で、日付順に並べれば前日との差分が得られる。FIRST_VALUE は先頭行の値、GROUP BY の集計では前日の値を参照できず、Dは構文・論理とも不適切。
関連サービス
| ウィンドウ関数 | OVER (PARTITION BY .. ORDER BY ..)。累計・順位・LAG/LEAD |
※ 学習用に作成したオリジナル問題です。本番試験とは異なります。