User manual
第 4 章 OLAP の使用
パフォーマンス&チューニング・ガイド 51
小計ローの各カラムの値は、次のようになっています。
• プレフィクスに含まれているカラム - そのカラムの値です。たとえば前
述のクエリでは、Year=2000 のローに関する小計ローの Ye ar カラムの値
は 2000 になります。
• プレフィクスから除外されたカラム - NULL です。たとえば、Year カラ
ムから成るプレフィクスにより生成された小計ローでは、Quarter カラム
の値は NULL になります。
• 集合関数 - 除外されているカラムの値を計算した結果です。
小計値は、集計されたローではなく基本データのローに対して計算され
ます。多くの場合、たとえば SUM や COUNT などでは結果は等しくなり
ますが、AVG、STDDEV、VARIANCE などの統計関数では結果が異なっ
てくるため、この区別は重要です。
ROLLUP 演算子には次の制限があります。
• ROLLUP 演算子は、COUNT DISTINCT と SUM DISTINCT を除き、GROUP
BY 句で使用可能なすべての集合関数をサポートしています。
• ROLLUP は SELECT 文でのみ使用できます。サブクエリでは ROLLUP を
使用できません。
•1 つの GROUP BY 句の中で複数の ROLLUP、CUBE、および GROUP BY
カラムを組み合わせるグループ化の指定は、現時点ではサポートされてい
ません。
• GROUP BY のキーに定数式を指定することはできません。
式の一般的なフォーマットについては、『Sybase IQ リファレンス・マニュア
ル』の「式」と「SQL 言語の要素」を参照してください。
ROLLUP 例 2 次は、ROLLUP と GROUPING の使用例です。GROUPING によっ
て作成される一連のマスク・カラムを表示します。カラム S、N、C に表示され
ている数字 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