
集約データの取得
| year | model | color | sales | |
| 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 |
|
| このクエリを処理するときに、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 を返します。
14 | Sybase IQ |