10年戦えるデータ分析入門

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 可変長の値を行に展開する

 JSON,XML形式データへの対応

10章 アクセスログのセッション分析をする

10.1 アクセスログとセッション

 累積和でセッションIDをつくる

10.2 セッションに対するパターンマッチ

第2部は省略