導入:
rollup は、SQL クエリで集計データを生成するために使用される特別な操作です。小計と総計を含む結果セットを作成でき、階層レポートの生成やデータの要約に使用できます。
ロールアップ操作は group by 句で使用され、クエリ結果に複数レベルの概要データを生成します。指定された列ごとにグループ化し、さまざまなレベルで集計結果を生成します。
使用法:
ロールアップ操作の使用方法の簡単な例を次に示します。
select column1, column2, sum(value)
from table
group by rollup (column1, column2)
;
上記のクエリは、1 つの列の総計、2 つの列の小計、すべての列の総計など、複数のレベルの集計データを生成します。具体的に生成される結果セットは次のとおりです。
- 列1と列2でグループ化されたグループごとの集計結果
- 列 column1 の小計 (column2 を無視)
- 列column2の小計(column1を無視)
- すべての列の合計
ロールアップを使用すると、複数のクエリを作成したり手動で計算したりすることなく、複数のレベルの集計データを一度に取得できます。
ロールアップを使用する場合、クエリ結果の null 値は、その列に対応するレベルで利用可能なデータがないことを示すことに注意してください。
ロールアップは、特に階層レポートの生成、データの分析、または bi (ビジネス インテリジェンス) ツールでのデータの要約と分析の実行など、マルチレベルの要約のニーズに対処する便利な方法を提供します。
例:
売上データのテーブルがある場合、ロールアップを使用してさまざまなレベルで集計結果を生成できます。次の売上テーブルがあるとします。
+---------+-------+--------+
| Country | Region | Sales |
+---------+-------+--------+
| USA | West | 100 |
| USA | East | 200 |
| USA | North | 150 |
| Canada | West | 120 |
| Canada | East | 180 |
| Mexico | North | 250 |
+---------+-------+--------+
次に、国、地域、全体ごとに売上を集計したいと思います。これを行うには、次のクエリを実行します。
select country, region, sum(sales)
from sales
group by rollup (country, region)
;
上記のクエリを実行すると、次の結果セットが生成されます。
+---------+-------+--------+
| Country | Region | Sales |
+---------+-------+--------+
| Canada | East | 180 |
| Canada | West | 120 |
| Canada | NULL | 300 |
| Mexico | North | 250 |
| Mexico | NULL | 250 |
| USA | East | 200 |
| USA | North | 150 |
| USA | West | 100 |
| USA | NULL | 450 |
| NULL | NULL | 1000 |
+---------+-------+--------+
結果として、次のことがわかります。
- 最下位レベルでは、各国および地域ごとの売上データが表示されます。
- 2 番目のレベルでは、各国の小計が表示されます。
- 最上位レベルでは、全体の合計が表示されます。
ロールアップにより、さまざまなレベルの包括的なデータを一度に取得できるため、販売データの分析と集計が容易になります。