目的
次の2つの方法のいずれかで分析します。
- 完全なROLLUPを実行しない単一の次元として。
- 完全なCUBEを実行しない複数の次元として。
構文
構文要素
- ordinary_grouping_set
- 複数の次元にまたがるキューブ状のレポート行をグループ分けするのに使う1つまたは複数の式。
- empty_grouping_set
- 引数を指定しない左括弧と右括弧の対の連続。この構文は総計を提供するのに使われます。
- rollup_list
- ROLLUPで指定された標準のgrouping expression set。複数の式を指定する場合、式リストは括弧で囲まなければなりません。
- cube_list
- CUBEで指定された標準のgrouping expression set。複数の式を指定する場合、式リストは括弧で囲まなければなりません。
- grouping_sets_specification
- 次のいずれか。
- 括弧内のordinary_grouping_set
- rollup_list
- cube_list
- empty_grouping_set
- grouping_sets_specification
ANSI準拠
GROUPING SETSは、ANSI SQL:2011に準拠しています。
SAMPLE句およびGROUPING SETS
GROUP BY句にGROUPING SETSオプションが指定されている問合わせにSAMPLE句を指定することはできません。例外は、派生テーブルまたはビューにGROUPING SETSオプションが指定されている問合わせの場合で、SAMPLE句は外問合わせで指定されます。
GROUPING SETSがデータを要約する方法
GROUPING SETSを使うと、結果セットを複数回グループ分けできます。空の括弧()は、問合わせで指定されたすべてのグループを合計した単一の総計グループを示します。
例: GROUPING SETS
次の問合わせの例では、1番目のグループとして州(state)と郡(county)で分類し、2番目のグループとして都市(city)で分類し、3番目のグループとしてテーブル全体を1つのグループとして分類しています。
次のsales_viewテーブル データがあると仮定します。
sales_view | ||||||
---|---|---|---|---|---|---|
PID | cost | sale | margin | state | county | city |
1 | 38350 | 50150 | 11800 | CA | Los Angeles | Long Beach |
1 | 63375 | 82875 | 19500 | CA | San Diego | San Diego |
1 | 46800 | 61200 | 14400 | CA | Los Angeles | Avalon |
1 | 40625 | 53125 | 12500 | CA | Los Angeles | Long Beach |
州(state)内の郡(county)、都市(city)、および州(state)ごとに売上高の集計を調べてみましょう。
次のSELECT文は、この情報を得るためにsales_viewのデータを分析します。
SELECT state, county, city, SUM(margin) FROM sales_view GROUP BY GROUPING SETS ((state,county),(city),());
問合わせで以下の結果が報告されます。疑問符(?)はnullを示します。
state |
county |
city |
SUM(margin) |
----- |
------ |
---- |
----------- |
CA |
Los Angeles |
? |
38700 |
CA |
San Diego |
? |
19500 |
? |
? |
Long Beach |
24300 |
? |
? |
San Diego |
19500 |
? |
? |
Avalon |
14400 |
? |
? |
? |
58200 |
nullは、欠落した情報ではなく、この応答セットでは空のセットを表わすのに使用されています。Nullは、示されているグループ分けレベルでレポートされない情報を意味しており、sales_view基本テーブルから欠落している情報を意味するわけではありません。この使用法は、nullが外部結合で一致しない行の空のセットを示すために使用されることに似ています。