小計ローの各カラムの値は、次のようになっています。

4 OLAP の使用

小計ローの各カラムの値は、次のようになっています。

プレフィクスに含まれているカラム - そのカラムの値です。たとえば前 述のクエリでは、Year=2000 のローに関する小計ローの Year カラムの値 は 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

SUM

S

N

C

----

-----

------

---

-

-

-

(NULL)

(NULL)

(NULL)

496

1

1

1

パフォーマンス&チューニング・ガイド

51

Page 67
Image 67
Sybase 12.7 manual 小計ローの各カラムの値は、次のようになっています。, パフォーマンス&チューニング・ガイド