1、group by 和 having
group by :按照某个或某些字段进行分类
having是分组之后的数据进行再次过滤,和group by 同时出现在语句中
分组函数:max 、min 、count 、sum 、avg 和group by 同时使用
当一条sql中没有group by ,整张表自成一组,group by 在where 之后执行
2、当一条sql中有group by ,查询字段只能跟参与分组的字段和分组函数,其他字段在分组函数中查询无意义
3、多个字段联合分组 group by job , dept
4、使用having效率低(分组之后再分组),一般使用where 代替 ,但无法使用where代替就要用到having(一般是:参与再分组的数据是计算出来的 )
<不可替代:select dept, avg(money) from table_name group by dept having avg(money)>2000;
可替代:select dept, max(money) from table_name group by dept having max(money)>2000;
替代为:select dept, max(money) from table_name where money>2000 group by dept;
网友评论