
|
|
|
| 第 4 章 | OLAP の使用 |
2001 | 501 | 936 | 2001 | 501 |
|
2001 | 600 | 936 | 2001 | 600 |
|
2001 | 601 | 792 | 2001 | 601 |
|
2001 | 700 | 1836 | 2001 | 700 |
|
ROLLUP 例 4 次のクエリ例は、注文数を年別および四半期別に集計したデー タを返します。
SELECT year(order_date) AS Year, quarter(order_date)
AS Quarter, COUNT(*) AS Orders
FROM alt_sales_order
GROUP BY ROLLUP(Year, Quarter)
ORDER BY Year, Quarter
次の図は、このクエリの結果を示しています。結果セット内の小計ローは強調 表示されています。各小計ローでは、その小計の計算対象になったカラムに NULL 値が格納されています。
ロー [1] は、両方の年 (2000 年および 2001 年 ) のすべての四半期の注文数の合 計を示しています。このローは、Year カラムと Quarter カラムの両方が NULL であり、すべてのカラムがプレフィクスから除外されています。
注意 ROLLUP 操作によって返される結果セットには、集合カラムを除くすべ てのカラムが NULL であるローが必ず 1 つ含まれています。このローは、集 合関数に対する全カラムの要約を表しています。たとえば、集合関数として SUM を使用している場合は、このローはすべての値の総計を表します。
ロー [2] は、2000 年および 2001 年の注文数の合計をそれぞれ示しています。 どちらのローも、Quarter カラムの値は NULL になっています。このカラムの 値を加算して、Year の小計を出しているためです。結果セットにこのような ローがいくつ含まれるかは、ROLLUP クエリに登場する変数の数によって決 まります。
[3]としてマークされている残りのローは要約情報を示し、それぞれの年の各 四半期の注文数の合計を表しています。
パフォーマンス&チューニング・ガイド | 53 |