MySQL | WITH ROLLUP による合計
GROUP BY を使用すると、GROUP BY の後に指定したカラムごとに合計を求めることができる。
ただし、項目ごとの合計と一緒に全体の合計も表示したい場合がある。
そのような場合に使用するのが WITH ROLLUP である。
WITH ROLLUP は、グループごとの合計を一度に求めるときに使用する。
WITH ROLLUP の構文
SELECT "フィールド1", SUM("フィールド2")
FROM "テーブル名"
GROUP BY "フィールド1"
WITH ROLLUP
WITH ROLLUP の例
store_information テーブル
| region_name | store_name | sales |
|---|---|---|
| West | Los Angeles | 1500 |
| West | San Diego | 250 |
| West | Los Angeles | 300 |
| East | Boston | 700 |
上記のようなテーブルがあるとして、次のように SQL 文を入力する。
SQL 例 1
SELECT store_name, SUM(sales)
FROM store_information
GROUP BY store_name
WITH ROLLUP
実行結果
| store_name | SUM(sales) |
|---|---|
| Boston | 700 |
| Los Angeles | 1800 |
| San Diego | 250 |
| NULL | 2750 |
最後の行に合計の 2750 が表示されている。 |
SQL 例 2
SELECT region_name, store_name, SUM(sales)
FROM store_information
GROUP BY region_name, store_name
WITH ROLLUP
実行結果
| region_name | store_name | SUM(sales) |
|---|---|---|
| East | Boston | 700 |
| East | NULL | 700 |
| West | Los Angeles | 1800 |
| West | San Diego | 250 |
| West | NULL | 2050 |
| NULL | NULL | 2750 |
2 行目に East の合計である 700 が表示され、5 行目に West の合計である 2050 が表示されている。
そして最後の行に、すべての合計である 2750 が表示される。