where VS having
- WHERE过滤行,而HAVING过滤分组
- WHERE后不能使用聚合函数过滤行,而HAVING可以使用聚合函数过滤分组
- WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤
分组汇总 WITH ROLLUP
select class,ssex,count(sname) from student group by class,ssex;
+-------+------+--------------+
| class | ssex | count(sname) |
+-------+------+--------------+
| 95031 | 女 | 1 |
| 95031 | 男 | 2 |
| 95033 | 女 | 1 |
| 95033 | 男 | 2 |
+-------+------+--------------+
select class,ssex,count(sname) from student group by class,ssex with rollup;
+-------+------+--------------+
| class | ssex | count(sname) |
+-------+------+--------------+
| 95031 | 女 | 1 |
| 95031 | 男 | 2 |
| 95031 | NULL | 3 |
| 95033 | 女 | 1 |
| 95033 | 男 | 2 |
| 95033 | NULL | 3 |
| NULL | NULL | 6 |
+-------+------+--------------+