8章 遅れて来た分析SQL最強の武器 -ウインドウ関数
8.1 サブクエリで複雑なSELECT文を組み立てる
かなり複雑なことをやらせられるようになった。FORM句
のあとにSELECT文をかける。またin句のあとにもかける。
8.2 ウインドウ関数でグループ全体を対象にした計算をする
主要なウインドウ関数(postgreSQL)
count
sum
avg
rank グループ内をソートして順位付けする(重複あり)
row_numer グループ内をソートして順位付けする(重複なし)
lag グループ内をソートして前の行の値をとる
lead グループ内をソートして後ろの行の値をとる
通常の集約関数もウインドウ関数になる
構文は
ウインドウ関数 OVER (PARTITION BY col
ORDER BY col [DESC or ASC]
(PARTITION BYは必須ではない)
実行される順番
ジョイン処理
WHERE句での絞り込み
GROUP BY句によるグルーピング
SELECT句による計算と集約
HAVING句による絞り込み
ウインドウ関数 ここで実行される
ORDER BY句によりソート
LIMIT句による制限
8.3 履歴テーブルから最新行を取る
row_number関数を使う
8.4 対全体比
sum関数を使って累積和を求める。
8.5 デシル分析をする
ntile関数を使う
8.6 時系列データの処理
9章 縦と横は難しい
9.1 横持テーブルと縦持テーブル
9.2 横持から縦持ちへの変換
CASE * WHEN ENDで変換する
unnest関数を使うと(postgreSQL固有)を使うともっと簡単にできる
9.3 縦持ちから横持への変換
横->縦と同じようにCASE句を使う
array_agg関数を使うと(postgreSQL固有)を使うと簡単にできる
9.4 可変長の値を行に展開する
10章 アクセスログのセッション分析をする
10.1 アクセスログとセッション
累積和でセッションIDをつくる
10.2 セッションに対するパターンマッチ
第2部は省略