自己結合
・元テーブル
例:店舗ごとの金額合計を出しつつ、他のカラムも表示する。
select * from Table1 t1 left join ( select tenpo_cd, sum(value) AS 'tenpo_total' from Table1 group by tenpo_cd ) AS t2 on t1.tenpo_cd = t2.tenpo_cd
・表示結果
やり方
- 集約関数を書いたものをサブクエリにする
- 同じテーブルで囲って結合する
これだけ。
他にもWindow関数などもある
参考記事
【ウィンドウ関数】Group By で指定していないカラムも出したい時は【分析関数】 - Qiita
番外編(集約関数の中にCASE式)
集約関数の中には、Group By句にないカラムもあるカラムもどっちも書ける。
SUM(カラム名)みたいに。
さらに集約関数の中にcase式を書けるのでけっこう自由に色々できる。
HAVING句では難しいときにおすすめ。
下記はSUM関数の中で商品名を指定している。
select tenpo_cd ,sum(case when syohin = 'pork' then value else 0 end) AS 'pork' ,sum(case when syohin = 'lemon' then value else 0 end) AS 'lemon' ,sum(case when syohin = 'beef' then value else 0 end) AS 'beef' from Table1 group by tenpo_cd