User manual

4 OLAP の使用
パフォーマンス&チューニング・ガイド 51
小計ローの各カラムの値は、次のようになっています。
プレフィクスに含まれているカラム そのカラムの値です。たとえば前
述のクエリでは、Year=2000 のローに関する小計ローの Ye ar カラムの値
2000 になります。
プレフィクスから除外されたカラム NULL です。たとえば、Year カラ
ムから成るプレフィクスにより生成された小計ローでは、Quarter カラム
の値は NULL になります。
集合関数 除外されているカラムの値を計算した結果です。
小計値は、集計されたローではなく基本データのローに対して計算され
ます。多くの場合、たとえば SUM COUNT などでは結果は等しくなり
ますが、AVGSTDDEVVARIANCE などの統計関数では結果が異なっ
てくるため、この区別は重要です。
ROLLUP 演算子には次の制限があります。
ROLLUP 演算子は、COUNT DISTINCT SUM DISTINCT を除き、GROUP
BY 句で使用可能なすべての集合関数をサポートしています。
ROLLUP SELECT 文でのみ使用できます。サブクエリでは ROLLUP
使用できません。
•1 つの GROUP BY 句の中で複数の ROLLUPCUBEおよび GROUP BY
カラムを組み合わせるグループ化の指定は、現時点ではサポートされてい
ません。
GROUP BY のキーに定数式を指定することはできません。
式の一般的なフォーマットについてはSybase IQ リファレンス・マニュア
ル』の「式」SQL 言語の要素」を参照してください。
ROLLUP 2 次は、ROLLUP GROUPING の使用例です。GROUPING によっ
て作成される一連のマスク・カラムを表示します。カラム SNC に表示され
ている数字 0 1 は、GROUPING からの戻り値で ROLLUP の結果の値を表現
しています。マスクが “011” であれば小計のローであり、“111” であれば総計の
ローであると特定できます。これを利用して、クエリの結果をプログラムで分
析することが可能です。
SELECT size, name, color, SUM(quantity),
GROUPING(size) AS S,
GROUPING(name) AS N,
GROUPING(color) AS C
FROM product
GROUP BY ROLLUP(size, name, color) HAVING (S=1 or N=1 or C=1)
ORDER BY size, name, color;
このクエリの結果セットを次に示します。
size name color SUMSNC
---- ----- ------ ------
(NULL) (NULL) (NULL) 496 1 1 1