GROUP BY GROUPING SETS ((os, browser), os, ())
||
GROUP BY ROLLUP (os, browser)
また、例は省略しますが「各列を絞るor絞らないの、全組み合わせによる集計」は、GROUPING SETSでも可能ながら、CUBEを使うと下のように簡単に書けます。
GROUP BY GROUPING SETS ((os, browser), os, browser, ())
||
GROUP BY CUBE (os, browser)
このようにROLLUPとCUBEは、
GROUP BY ROLLUP (columnA, columnB, columnC)
||
GROUP BY GROUPING SETS ((columnA, columnB, columnC),
(columnA, columnB),
columnA, ())
||
片方向に(ツリー状に)絞っていく組み合せによる集計
---
GROUP BY CUBE (columnA, columnB, columnC)
||
GROUP BY GROUPING SETS ((columnA, columnB, columnC),
(columnA, columnB),
(columnA, columnC),
(columnB, columnC),
columnA, columnB, columnC, ())
||
各列で絞る or 絞らないの、全ての組み合わせによる集計
というわけで、新しい構文がGROUPING SETS、CUBE、ROLLUPと3つあるといっても別々な存在ではなく、基本になるGROUP BY GROUPING SETS + その短縮形2つ。今回自分が試した中では、GROUPING SETSを適当にいじっているうち何となく動作が分かってきました。
このほか報告では、(1)少し面倒なクエリを書いてクロス表を作った後に、総計だけ足すのが簡単になる、(2)ブログアクセスを地域別・ブラウザ別に集計してみたら、東京ではIEの割合が低く、地方で意外にも?Firefoxの割合が少し高いというトピックも紹介しました。前者はそのうち別記事で、クロス表を作る例と合わせて書きます。後者は普通のGROUP BYで出来る話で、まぁ余談です。
以上、拙い報告でしたが、聞いて下さった皆さんありがとうございました。m(_)m