
第 4 章 OLAP の使用
•GROUP BY のキーに定数式を指定することはできません。
注意 キューブのサイズがテンポラリ・キャッシュのサイズを超えると、CUBE のパフォーマンスが低下します。
GROUPING と CUBE 演算子を併用すると、格納されていた NULL 値と CUBE によって作成されたクエリ結果の “NULL” 値を区別することができます。
GROUPING 関数を使用して結果を分析する方法については、ROLLUP 演算子 の説明で紹介した例を参照してください。
CUBE 操作が返す結果セットには、集計カラムを除くすべてのカラムの値が NULL であるローが少なくとも 1 つは含まれています。このローは、集合関数 に対する全カラムの要約を表しています。
CUBE 例 1 次の例は、対象者の州 ( 地理的な位置 )、性別、教育レベル、およ び収入などで構成される調査データを使用したクエリです。最初に紹介するク エリには GROUP BY 句が指定されています。この句は、クエリの結果を census テーブルの state、gender、education カラムの値に応じてロー・グルー プに分類し、収入の平均とローの合計数をグループごとに計算します。このク エリには GROUP BY 句だけを使用し、ローのグループ化に CUBE 演算子を使 用していません。
SELECT state, sex as gender, dept_id, COUNT(*),
CAST(ROUND(AVG(salary),2) AS NUMERIC(18,2))
AS average
FROM employee WHERE state IN ('MA' , 'CA')
GROUP BY state, sex, dept_id
ORDER BY 1,2;
このクエリの結果セットを次に示します。
state gender dept_id count(*) avg salary
-----
CA | F | 200 | 2 | 58650.00 |
CA | M | 200 | 1 | 39300.00 |
MA | F | 500 | 4 | 29950.00 |
MA | F | 400 | 8 | 41959.88 |
MA | F | 300 | 7 | 59685.71 |
MA | F | 200 | 3 | 60451.00 |
MA | F | 100 | 6 | 58243.42 |
MA | M | 300 | 2 | 58850.00 |
MA | M | 500 | 5 | 36793.96 |
MA | M | 400 | 8 | 45321.47 |
MA | M | 100 | 13 | 58563.59 |
MA | M | 200 | 8 | 46810.63 |
パフォーマンス&チューニング・ガイド | 57 |