16.20 - GROUPING SETSオプション - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-162K-JPN
Language
日本語 (日本)

目的

次の2つの方法のいずれかで分析します。
  • 完全なROLLUPを実行しない単一の次元として。
  • 完全なCUBEを実行しない複数の次元として。

構文



構文要素

ordinary_grouping_set
複数の次元にまたがるキューブ状のレポート行をグループ分けするのに使う1つまたは複数の式。
すべてのordinary grouping setsは列を明示的に参照しなければなりません。GROUPING SETSで列の位置を指定することはできません。
ordinary grouping setに190個より多い列を指定することはできません。
BLOBまたはCLOBデータ型の列を参照する場合、最初に別のデータ型にCASTするか、または結果がLOBではない関数に渡さなければ参照できません。たとえば、BLOBをBYTE型またはVARBYTE型にキャストしたり、CLOBをCHARACTER型またはVARCHAR型にキャストします。
式は、BLOB、CLOB、ARRAYまたはVARRAYのタイプがある結果行をグループ化できません。
empty_grouping_set
引数を指定しない左括弧と右括弧の対の連続。この構文は総計を提供するのに使われます。
ここで総計という用語は、非集約データの総計ではなく個々のグループ合計の総計を言います。
rollup_list
ROLLUPで指定された標準のgrouping expression set。複数の式を指定する場合、式リストは括弧で囲まなければなりません。
式は、BLOB、CLOB、ARRAYまたはVARRAYのタイプがある結果行をグループ化できません。
SLES 11 EDW システムがありTeradata Database 16.0以降を使用している場合、flexスロットルが適用されるように指定できます。 詳細については、ROLLUPグループ化セットオプションを参照してください。
cube_list
CUBEで指定された標準のgrouping expression set。複数の式を指定する場合、式リストは括弧で囲まなければなりません。
式は、BLOB、CLOB、ARRAYまたはVARRAYのタイプがある結果行をグループ化できません。
SLES 11 EDW システムがありTeradata Database 16.0以降を使用している場合、flexスロットルが適用されるように指定できます。 詳細については、CUBEグループ化セット オプションを参照してください。
grouping_sets_specification
次のいずれか。
  • 括弧内のordinary_grouping_set
  • rollup_list
  • cube_list
  • empty_grouping_set
  • grouping_sets_specification
システム構成以外のグループ化セット指定の入れ子レベルの数には制限がありません。
LOBデータ型の列は参照できません。

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が外部結合で一致しない行の空のセットを示すために使用されることに似ています。