この記事では、SQLの集計処理でよく用いられる`ROLLUP`, `CUBE`, `GROUPING SETS`について解説します。これらの処理は、データをさまざまな角度から集計するために非常に便利なツールです。具体的なSQLコードとその解説、実例を交えて詳しく見ていきましょう。
目次
ROLLUPとは?
`ROLLUP`は、SQLで用いられる集計関数の一つです。グループ化の順序に従って階層的な集計を行うことができます。
基本的な使用方法
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY ROLLUP(column1, column2);
ROLLUPの実例
考え方を理解しやすくするために、以下のような商品データのテーブルを例にします。
Category | Product | Revenue |
---|---|---|
Electronics | TV | 2000 |
Electronics | Camera | 1500 |
Clothing | Shirt | 800 |
Clothing | Pants | 1200 |
このテーブルに対して、次のようなROLLUPクエリを実行します。
SELECT Category, Product, SUM(Revenue)
FROM table_name
GROUP BY ROLLUP(Category, Product);
CUBEとは?
`CUBE`もまた、SQLの集計関数の一つですが、`ROLLUP`とは異なり、すべての組み合わせに対して集計を行います。
基本的な使用方法
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY CUBE(column1, column2);
CUBEの実例
先程の商品データのテーブルに対して、次のようなCUBEクエリを実行すると、以下のような結果が得られます。
SELECT Category, Product, SUM(Revenue)
FROM table_name
GROUP BY CUBE(Category, Product);
GROUPING SETSとは?
`GROUPING SETS`は、複数の集計を一度のクエリで行えるように設計されています。
基本的な使用方法
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY GROUPING SETS((column1, column2), (column1), ());
GROUPING SETSの実例
`sCode]
SELECT Category, Product, SUM(Revenue)
FROM table_name
GROUP BY GROUPING SETS((Category, Product), (Category), ());
コメント