導入:
SQL では、ロールアップを使用してクエリ結果の小計と総計を生成するオプションです。group by 句とともに使用すると、group by クエリの結果に行を追加できます。
rollup では、指定されたグループ化列ごとに小計が生成され、最後に合計の行が追加されます。このようにして、各グループの小計と全体の総計を簡単に取得できます。
使用法と例:
以下は、次の sales テーブルがあると仮定して、 rollup での の使用法を示す例です。
+---------+-------+--------+
| 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 country, region with rollup
;
上記のクエリを実行すると、次の結果セットが生成されます。
+---------+-------+--------+
| 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 |
+---------+-------+--------+
結果として、次のことがわかります。
- 各グループの小計行では、国と地域の列にグループの値が含まれ、売上列はそのグループの総売上高です。
- 合計行では、国と地域の列には NULL 値があり、売上列には結果セット全体の売上合計が表示されます。
ロールアップと併用すると、データを簡単にグループ化して要約し、各グループの小計と全体の合計を取得できます。これはデータ分析やレポート作成に非常に便利です。