group by:通过一定规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
一般having 语句会配合group by 语句进行使用,having语句对分组进行过滤。
where 语句 过滤指定的是列而不是分组,不能在聚合函数中使用。

返回集字段,要么包含在group by语句的后面作为分组的依据,要么就要被包含在聚合函数中。
因为group by是多条记录的结果,如果返回集字段不是分组依据或者聚合函数的话。

group by 先排序后分组

where + group by + having + 聚合函数
1. 执行where子句查找符合条件的数据
2. 执行group by 分组
3. 执行聚合函数
4. 执行having 筛选

select class from courses group by class having count(distinct student) >=5;