GROUP BY 句の拡張機能
GROUP BY での ROLLUP と CUBE
プレフィクスに関する一般的なグループ化を簡単に指定するために、2 つの重 要な構文簡略化パターンが用意されています。1 つ目のパターンは ROLLUP、 2 つ目のパターンは CUBE と呼ばれます。
GROUP BY ROLLUP
ROLLUP 演算子には、引数として適用するグループ化の式を、次の構文の中 で順序リストで指定します。
SELECT … [ GROUPING
GROUP BY [ expression [, … ]
ROLLUP ( expression [, … ] ) ]
GROUPING は、カラム名をパラメータとして受け取り、表
表
結果値の種類
ROLLUP 演算子によって作成された NULL
ローが小計であることを示す NULL
ROLLUP 演算子によって作成された以外の NULL
格納されていた NULL
ROLLUP は、まずGROUP BY 句に指定された標準的な集合関数値を計算します。 次に、ROLLUP はグループ化を行うカラムのリストを右から左に移動し、より高 いレベルの小計を連続して作成します。最後に総計が作成されます。グループ化 するカラムの数がn 個の場合、ROLLUP はn+1 レベルの小計を作成します。
SQL 構文の例 | 定義されるセット |
GROUP BY ROLLUP (A, B, C); | (A, B, C) |
| (A, B) |
| (A) |
| ( ) |
|
|
ROLLUP と小計ロー ROLLUP は、GROUP BY のクエリ・セットに対して UNION を行うのと同じ ことです。次の 2 つのクエリの結果セットは等しくなります。GROUP BY (A,
B)の結果セットは、A と B に定数が含まれているすべてのローについての小 計から成ります。UNION を可能にするために、カラム C には NULL が割り当 てられます。
48 | Sybase IQ |