查询简介(四)之类型转换和分组查询
https://mp.weixin.qq.com/s/95pp52l8L9yR6QOCzseLQA
嵌套分组
有时候按照某个列进行分组太笼统,也就是说一个分组内可以被继续划分成更小的分组。比方说对于student_info
表来说,我们可以先按照department
来进行分组,所以可以被划分为2个分组:
我们觉得这样按照department
分组后,各个分组可以再按照major
来继续分组,从而划分成更小的分组,所以再次分组之后的样子就是这样:
所以现在有了2个大分组,4个小分组,我们把这种对大的分组下继续分组的的情形叫做嵌套分组
,如果你乐意,你可以继续把小分组划分成更小的分组。我们只需要在GROUP BY
子句中把各个分组列依次写上,用逗号,
分隔开就好了。比如这样:
可以看到,在嵌套分组
中,聚集函数将作用在最后一个分组列上,在这个例子中就是major
列。
WHERE
子句和HAVING
子句的区别:
WHERE
子句在数据分组前进行过滤,作用于每一条记录,WHERE
子句过滤掉的记录将不包括在分组中。而HAVING
子句在数据分组后进行过滤,作用于整个分组。