SQLの集計関数ROLLUP, CUBE, GROUPING SETSの使い方

この記事では、SQLの集計処理でよく用いられる`ROLLUP`, `CUBE`, `GROUPING SETS`について解説します。これらの処理は、データをさまざまな角度から集計するために非常に便利なツールです。具体的なSQLコードとその解説、実例を交えて詳しく見ていきましょう。

目次

ROLLUPとは?

`ROLLUP`は、SQLで用いられる集計関数の一つです。グループ化の順序に従って階層的な集計を行うことができます。

基本的な使用方法

SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY ROLLUP(column1, column2);

ROLLUPの実例

考え方を理解しやすくするために、以下のような商品データのテーブルを例にします。

CategoryProductRevenue
ElectronicsTV2000
ElectronicsCamera1500
ClothingShirt800
ClothingPants1200
商品データのテーブル

このテーブルに対して、次のような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), ());

まとめ

`ROLLUP`, `CUBE`, `GROUPING SETS`は、SQLでよく用いられる集計関数です。それぞれの関数が持つ特性を理解し、適切に使い分けることで、効率的なデータ分析が可能となります。

コメント

コメントする