okinawa

IT勉強メモ

GROUPING演算子とWINDOW関数のフレーム

あまりちゃんと理解できていない。
自分用のメモとして。

GROUPING演算子

ROLLUP:小計、合計を出力
CUBE:3次元以上のデータ。よくわからなかった。→参考:https://it-trend.jp/bi/article/cube

元テーブル

select tenpo_cd, bunrui, sum(value) from Table1
group by ROLLUP(tenpo_cd, bunrui)

実行結果

bunruiがNULLの行にtenpo_cd毎の小計。
tenpo_cdとbunruiがNULLの行に全合計が出力されている。

WINDOW関数のフレーム

前後行の値を集計可能

PARTITION BYは省略可能。
ORDER BYは必須。

・構文

OVER(PARTITION BY カラム名
    ORDER BY カラム名
    ROWS(RANGE) ~)

1行前の行との合計値を出力するクエリ↓

select 
tenpo_cd
, bunrui
, value
, sum(value)over(partition by tenpo_cd order by tenpo_cd  rows between 1 preceding and current row) 
from Table1

実行結果

・参考サイト

https://ichiroku11.hatenablog.jp/entry/2017/04/19/225831 https://zenn.dev/nanbunan/articles/ad96d04fb2e616