MySQL公众号的文章

查询简介(四)之类型转换和分组查询

https://mp.weixin.qq.com/s/95pp52l8L9yR6QOCzseLQA

嵌套分组

有时候按照某个列进行分组太笼统,也就是说一个分组内可以被继续划分成更小的分组。比方说对于student_info表来说,我们可以先按照department来进行分组,所以可以被划分为2个分组:

我们觉得这样按照department分组后,各个分组可以再按照major来继续分组,从而划分成更小的分组,所以再次分组之后的样子就是这样:

所以现在有了2个大分组,4个小分组,我们把这种对大的分组下继续分组的的情形叫做嵌套分组,如果你乐意,你可以继续把小分组划分成更小的分组。我们只需要在GROUP BY子句中把各个分组列依次写上,用逗号,分隔开就好了。比如这样:

可以看到,在嵌套分组中,聚集函数将作用在最后一个分组列上,在这个例子中就是major列。

WHERE子句和HAVING子句的区别:

WHERE子句在数据分组前进行过滤,作用于每一条记录,WHERE子句过滤掉的记录将不包括在分组中。而HAVING子句在数据分组后进行过滤,作用于整个分组。

原文地址:https://www.cnblogs.com/xuhaojun/p/9145685.html