Sybase IQ 12.7 User Manual

Page of 212
集約データの取得
 
14
 
Sybase IQ
このクエリを処理するときに、
Sybase IQ は最初に、指定された 3 つすべての
グループ化式
 (year、model、color) によってデータをグループ化し、次に最後
の式
 (color) を除くすべてのグループ化式によってデータをグループ化します。
5 番目のローの NULL は、color カラムの ROLLUP 値、つまり、そのモデルの
すべての色の合計販売数を示します。
343 は、1990 年のすべてのモデルと色の
合計販売数を表し、
314 は 1991 年の合計販売数を表します。最後のローは、す
べての年のすべてのモデルとすべての色の合計販売数を表します。
ROLLUP 演算子には、引数としてグループ化式の順番リストを指定する必要
があります。他のグループを含むグループをリストするときは、先に大きい方
のグループをリストします
 ( たとえば、state をリストしてから city をリスト
します
)。
ROLLUP 演算子は、集合関数の SUM、COUNT、AVG、MIN、MAX、STDDEV、
VARIANCE とともに使用できます。ただし、ROLLUP は COUNT DISTINCT と
SUM DISTINCT をサポートしていません。
CUBE の使用
次のクエリでは、人々の州
 ( 地理的位置 )、性別、教育水準、所得を含む国勢調
査のデータを使用します。
GROUP BY 句の CUBE 拡張を使用すると、census
テーブル内の国勢調査データを
 1 回参照するだけで、州、性別、教育水準の国
勢調査全体の平均所得を計算し、
state、gender、education の各カラムの可能な
すべての組み合わせの平均所得を計算できます。たとえば、すべての州のすべ
ての女性の平均所得を計算する場合や、教育水準と地理的位置を基準に国勢調
査のすべての人々の平均所得を計算する場合に、
CUBE 演算子を使用します。
CUBE でグループを計算するときに、CUBE は計算されたグループのカラムに
NULL 値を挿入します。各ローが表すグループの種類と、その NULL がデータ
ベースに格納されている
 NULL なのか、CUBE が挿入した NULL なのかを区
別することは困難です。この問題を解決するのが
 GROUPING 関数です。指定
されたカラムが上位レベルのグループにマージされている場合、この関数は
 1
を返します。
1991
Chevrolet
blue
54
1991
Chevrolet
red
95
1991
Chevrolet
white
49
1991
Chevrolet
NULL
198
1991
Ford
blue
52
1991
Ford
red
55
1991
Ford
white
9
1991
Ford
NULL
116
1991
NULL
NULL
314
NULL
NULL
NULL
657
year
model
color
sales