集約・ウィンドウ関数
8 コマンド
行をグループ化して集約 GROUP BY
行をグループ化して集約関数を適用する。SELECT に書ける列の制約や NULL の扱いを理解しよう
グループに条件を付ける HAVING
グループ化後の結果に対する絞り込み。WHERE との違いと使い分けを押さえる
件数・合計・平均を計算 COUNT / SUM / AVG / MIN / MAX
基本の集約関数。COUNT(*) と COUNT(col) の違い、NULL を無視する性質を理解する
行を潰さず集計する ウィンドウ関数入門 (OVER / PARTITION BY)
GROUP BY と違い行数を潰さず集計する。OVER と PARTITION BY の基本、移動平均の例
順位を付ける ROW_NUMBER / RANK / DENSE_RANK / NTILE
ランキング系ウィンドウ関数。同値・欠番の扱いが関数ごとに違うので使い分ける
集計範囲を細かく指定 ウィンドウフレーム (ROWS / RANGE)
OVER の中の「どこからどこまでを集計するか」を決めるフレーム。デフォルトの落とし穴に注意
前後の行を参照する LAG / LEAD / FIRST_VALUE / LAST_VALUE
前後の行の値を参照するウィンドウ関数。LAG で差分、時系列分析の定番
小計・総計を一括で出す ROLLUP / CUBE / GROUPING SETS
小計・総計を 1 クエリで。ROLLUP は階層、CUBE は全組合せ、GROUPING SETS は任意指定
