![c_state](/images/new-backgrounds/25485/2548561x1.webp)
第 1 章 データベース・テーブルからのデータの選択
次のクエリは、GROUPING 関数を GROUP BY CUBE と組み合わせた使用例 です。
SELECT
CASE GROUPING ( state ) WHEN 1 THEN 'ALL' ELSE state END AS c_state,
CASE GROUPING ( gender ) WHEN 1 THEN 'ALL' ELSE gender END AS c_gender,
CASE GROUPING ( education ) WHEN 1 THEN 'ALL' ELSE education END AS c_education,
COUNT(*), CAST (ROUND ( AVG ( income ), 2 ) AS NUMERIC (18,2)) AS average
FROM census
GROUP BY CUBE (state, gender, education);
このクエリの結果は次のとおりです。CUBE が生成した小計ローを示す NULL 値が、クエリ内の指定によって小計ローで ALL に置き換わっています。
c_state | c_gender | c_education | count(*) | average |
MA | f | BA | 3 | 48333.33 |
MA | f | HS | 2 | 40000.00 |
MA | f | MS | 1 | 45000.00 |
MA | f | ALL | 6 | 45000.00 |
MA | m | BA | 4 | 55000.00 |
MA | m | HS | 1 | 55000.00 |
MA | m | MS | 3 | 85000.00 |
MA | m | ALL | 8 | 66250.00 |
MA | ALL | ALL | 14 | 57142.86 |
NH | f | HS | 2 | 50000.00 |
NH | f | MS | 1 | 85000.00 |
NH | f | ALL | 3 | 61666.67 |
NH | m | BA | 3 | 55000.00 |
NH | m | MS | 1 | 49000.00 |
NH | m | ALL | 4 | 53500.00 |
NH | ALL | ALL | 7 | 57000.00 |
ALL | ALL | ALL | 21 | 57095.24 |
ALL | ALL | BA | 10 | 53000.00 |
ALL | ALL | MS | 6 | 72333.33 |
ALL | ALL | HS | 5 | 47000.00 |
ALL | f | ALL | 9 | 50555.56 |
パフォーマンス&チューニング・ガイド | 15 |