この後に、結果セット内の行をグループ化するために使用する選択式リストに含まれる式(1つまたは複数)へのオプションの参照が続きます。
GROUP BY句は、シード文の一部としてコーディングされる場合に有効です。
GROUP BYは、繰り返し文の一部としてコーディングされる場合、必ず無効になります。
- ordinary_grouping_set
- リクエストによって返される行を分類する列式。
- empty_grouping_set
- 引数を指定しない左括弧と右括弧の対の連続。一般に、この構文は総計を要求するために使用します。
- rollup_list
- 結果行を単一の次元の1つ以上の詳細レベルで報告するROLLUP式。詳細については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。
- cube_list
- 結果行を複数の次元の1つ以上の詳細レベルで報告するCUBE式。詳細については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。
- grouping_sets_specification
- 結果行を次のいずれかの方法で報告するGROUPING SETS式。
例: GROUP BY句の使い方
集約および順序付き分析関数と同様、GROUP BY句も再帰的ビュー定義内のシード文の一部としてコーディングされる場合は有効ですが、繰り返し文の一部としてコーディングされる場合は無効です。
最初の例は、GROUP BY句の正しい使い方を示しています。この例でGROUP BYは、シード文の一部としてコーディングされています。
CREATE RECURSIVE VIEW aggregation (source,destination,mycount) AS ( SELECT source, destination, 0 AS mycount FROM flights GROUP BY source, destination UNION ALL SELECT in1.source, out1.destination, in1.mycount + 1 FROM aggregation AS in1, flights AS out1 WHERE in1.destination = out1.source AND in1.mycount <=100);
2番目の例は、GROUP BY句の無効な使い方を示しています。この例でGROUP BY句は、繰り返し文の一部としてコーディングされています。
CREATE RECURSIVE VIEW aggregation (source,destination,mycount) AS ( SELECT source, destination, 0 AS mycount FROM flights UNION ALL SELECT in1.source, out1.destination, in1.mycount + 1 FROM aggregation AS in1, flights AS out1 WHERE in1.destination = out1.source AND in1.mycount <=100 GROUP BY in1.source, out1.destination);