mysqlのgroup by with rollup, group by with cubeについて。

tableの地区,手商品の二つのカラムでgroup byだけ書いた場合、もっとも低いレベル(この場合は地区と商品
)のみの集計値となる。上位グループの地区毎の集計値も欲しい場合、また別のsqlを書く必要がある。

けど、group by with roll upを使えば、上位グループと総計値も求めてくれるらしい。

・地区と商品、地区の2つのレベルで数量の合計を集計するsql
select 地区,商品, sum(数量) from 売上
group bu with rollup(地区,商品);

知らなかった。sqlを二つ書いたり、on memoryでやってた。気づきの世界だ。

あと、group by with cubeは、異なるグループの小計と総計が求められる。

・地区と商品、地区、商品の3つのレベルで数量の合計を集計するsql
select 地区,商品, sum(数量) from 売上
group bu with cube(地区,商品);

参考本
SQL実践リファレンス/九天社
¥2,625
Amazon.co.jp