GROUP BY 句に WITH ROLLUP 修飾子を加えると、
クエリがすべてのデータにわたる総合計の値を示す行を生成します :

ROLLUP を使用する場合、ORDER BY 句を同時に使用して結果をソートすることはできません。
つまり、ROLLUP と ORDER BY は互いに排し合うということになります。
しかし、ソートの順番をいくらかコントロールすることは可能です。
MySQL の GROUP BY が結果をソートし、そして 明示的な ASC および DESC キーワードを
GROUP BY 内で名付けられたカラムと使用し、各カラムのソート順を指定することができます。
( しかし、ROLLUP によって加えられた高レベルな要約行は、ソート順に関わらず、
それらが計算された行の後に現れます。)

LIMIT はクライアントに戻される行の数を限定するのに使用できます。LIMIT は ROLLUP
の後に適用され、それによって ROLLUP によって追加された行に対しての制限が適用されます。


mysql> SELECT
-> ENGINE,
-> COUNT(*) AS Total
-> from information_schema.TABLES
-> where ENGINE IS NOT NULL
-> GROUP BY ENGINE;
+--------+-------+
| ENGINE | Total |
+--------+-------+
| CSV | 2 |
| InnoDB | 12 |
| MEMORY | 20 |
| MyISAM | 134 |
+--------+-------+
4 rows in set (0.01 sec)

mysql> SELECT
-> ENGINE,
-> COUNT(*) AS Total
-> from information_schema.TABLES
-> where ENGINE IS NOT NULL
-> GROUP BY ENGINE WITH ROLLUP;
+--------+-------+
| ENGINE | Total |
+--------+-------+
| CSV | 2 |
| InnoDB | 12 |
| MEMORY | 20 |
| MyISAM | 134 |
| NULL | 168 |
+--------+-------+
5 rows in set (0.04 sec)

roll_up

11.11.2. GROUP BY 修飾子