【SQL】WITH句とLEAD関数/LEN関数とOVER(PARTITION BYを使いこなして集計する方法はよく忘れる

徒然草2.0

統計の専門家…データサイエンティストと言うんでしょうか…の勉強をしている方なのか、ただWebマーケティングをやりたい方なのか存じませんか、ちょくちょくSQLに関しての説明を求められて調べるのですが…なかなか勉強になります。そして、統計は面白い。統計なんたるかはわからなくてもデータの構造をうまい具合に操作をするのは、統計に関して無学な自分でもなんとか手が動きます。

昔、Webサイトの集計に何度か使ったような気がしますが…それを本職としていないとあまり馴染みがありません…こいつらLEAD関数とLEN関数は使いこなせると便利です。時系列に並び替えたレコードの前後を見ながら株式で言うところの移動平均線などを表示するのに使えます…過去に何度か使ったことがあるはずなのですがLEADもLENも使っていないと忘れる。というわけで備忘録です。

CASE WITH x OVER (PARTITION BY y ORDER BY id) else null end as z なんかもまず使いません。

PARTITION BYは通常の式(CASEの外側の式という意味)で言うところのGROUP BY句です。じゃあ、ORDER BY idってなんだ?ということになります。SELECT文の中のCASEでORDER BYって集計中にソートして結果が変わるのか???みたいな疑問は、ふつうのSQLおじさんは思うはずですがどんぴしゃの説明が引用元「分析関数(ウインドウ関数)をわかりやすく説明してみた – Qiita」「行を順番に並べた上で、最初の行から現在行までのみを集計の対象にする」」なるほど!すごい便利です。現在の行と次の行を比較するなんて方法をこの「5. ページ別合計滞在時間・平均滞在時間」のような感じで書ける。参考:「Google Analytics 4 + BigQueryでよく使う基本的なSQL例 | エクスチュア株式会社ブログ

コメント

タイトルとURLをコピーしました