GROUPING
(day, month, year) のような順序付きのカラムのリストを取り、集約の各レベルの小計を計算したうえで、最後に総計も計算します。CUBE は、指定したカラムのすべての組み合わせに対する小計を計算します。GROUPING は、ROLLUP または CUBE が返す行のうち、どれが上位集約の行で、どれが修飾子なしの GROUP BY で返される行かを識別します。
GROUPING 関数は複数のカラムを引数に取り、ビットマスクを返します。
1は、GROUP BYに対するROLLUPまたはCUBE修飾子によって返された行が小計であることを示します0は、ROLLUPまたはCUBEによって返された行が小計ではないことを示します
GROUPING SETS
サンプルデータを読み込む
シンプルなクエリ
複数のGROUP BYステートメントをGROUPING SETSと比較する
CUBE と GROUPING SETS の比較
CUBE(datacenter,distro,version) における CUBE は、必ずしも妥当な階層になるとは限りません。2 つのディストリビューションをまたいで バージョン を比較しても意味はありません (Arch と RHEL ではリリースサイクルもバージョンの命名規則も異なるためです) 。この次に続く GROUPING SETS の例のほうが適切で、distro と version を同じセットとしてグループ化しています。
上の例の バージョン は、ディストリビューションに関連付けられていない場合、意味をなさない可能性があります。カーネルバージョンを追跡しているのであれば意味があるかもしれません。というのも、カーネルバージョンはどちらのディストリビューションにも対応しうるためです。次の例のように、GROUPING SETS を使用するほうが適切かもしれません。