16.20 - GROUP BY - 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-1144-162K-JPN
Language
日本語 (日本)

この後に、結果セット内の行をグループ化するために使用する選択式リストに含まれる式(1つまたは複数)へのオプションの参照が続きます。

GROUP BY句は、シード文の一部としてコーディングされる場合に有効です。

GROUP BYは、繰り返し文の一部としてコーディングされる場合、必ず無効になります。

ordinary_grouping_set
リクエストによって返される行を分類する列式。
ordinary_grouping_setには次が含まれます。
  • column_nameは、データをグループ分けするための列を指定するGROUP BY句内で使われるSELECT文のFROM句に指定されているテーブルのリストから取り出される一連の列名を指定します。
グループ式にLOB列を組み込むことはできません。
  • column_positionは、データをグループ分けするときの順序を指定するのにGROUP BY句内で使われるSELECT文のcolumn_list句内での列の順序位置を指定します。
これは正の整数です。
グループ式にLOB列を組み込むことはできません。
column_positionの使用は、ANSI SQL-2011規格のTeradata拡張機能です。
  • expressionは、GROUP BY句に指定する有効なSQL式のリストを指定します。
column_name, column_positionおよびexpressionを、個別のエントリまたはリストとして指定できます。
ordinary_grouping_setにLOB列を組み込むことはできません。
expressionの使用は、ANSI SQL-2011規格のTeradata拡張機能です。
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式。
  • 単一の次元(完全なROLLUPを指定しない)
  • 複数の次元(完全なCUBEを指定しない)
詳細については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。

例: 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);