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