group by 分组聚合
一旦有 group by 子句,那么,在 select 子句中就不能有(分组字段,聚合函数)以外的字段
聚合函数:max()、min()、avg()、sum()、count()、disctinct()
为什么 where 必须写在 group by 的前面,为什么 group by 后面的条件只能用 having
因为,where 是用于在真正执行查询逻辑之前过滤数据用的
having 是对 group by 聚合之后的结果进行再过滤;
上述语句的执行逻辑:
- where 过滤不满足条件数据
- 用聚合函数和 group by 进行数据运算聚合、得到运算结果
- 用 having 条件过滤掉聚合结果中不满足条件的数据