Developer

【SQL基礎】GROUPING演算子とは
2021.08.31
Lv1

【SQL基礎】GROUPING演算子とは

本項からはGROUPING演算子について説明をしていきます。


GROUPING演算子とは

GROUP BY句の基本構文」で列を指定してデータをグループ化して表示できることを解説しました。
本項ではその補足として、GROUPING演算子、その中でもMySQLで使用できるROLLUPについて解説します。
ROLLUPを使用すれば、単純にGROUP BYで集計したものを小計とすると、合計も一緒に表示することができます。

MySQLには未実装なのでここでは詳しく解説しませんが、GROUPING演算子にはROLLUP以外にも、CUBEやGROUPING SETSというものもあります。
CUBEは、指定した列の全ての組み合わせ集計を表示します。

GROUPING SETSは、表示したい組み合わせを指定して表示できます。


ROLLUPの基本構文

ROLLUPの基本的な構文は以下になります。

SELECT 列名 
FROM テーブル名 
GROUP BY 列名 WITH ROLLUP;

GROUP BY句の後に「WITH ROLLUP」と記述することで、前述のように合計を表示する行が追加されます。
この合計行のことを「超集合行」といいます。

次項からは、実際の動きを見ていきたいと思います。


今回の学習ポイント

・GROUPING演算子を使用すると、GROUP BY句で集約したものをさらに集約できる。
・MySQLで使用できるものはROLLUPのみ


練習問題

1.次のうちMySQLでのROLLUPの構文としてあっているものはどれか。

A)SELECT col1, SUM(col2) FROM table GROUP BY ROLLUP(name);
B)SELECT col1, SUM(col2) FROM table GROUP BY name WITH ROLLUP;
C)SELECT col1, SUM(col2) FROM table GROUP BY name ROLLUP;

答え

Bの「WITH ROLLUP」が正解。

AはOracleなどでの書き方なので間違い。
CはWITHが足りないので間違い。