语法:sql
group by 字段 having 条件判断;函数
group by的用法我已经在上一篇经验中介绍了it
仍是已员工绩效表为例class
咱们若是就是查询每一个部门成绩大于89的员工数,能够这样写:基础
SELECT dept,COUNT(user_name) FROM ec_uses WHERE score>89 GROUP BY dept;语法
对这个查询的过程进行分析,实际上是:先查出绩效成绩大于89的员工记录,而后再用count聚合函数统计部门的人数,也就是说where是在聚合以前筛选记录的,那么若是咱们要在聚合以后筛选记录该如何处理呢?im
例如,在上面的基础上再加一个条件,查询部门人数大于1的部门统计
那么咱们是先要统计出每一个部门的人数,也就是要用count聚合函数,而后再看哪些部门的人数是多于1人的经验
也就是筛选条件是在聚合以后的,这时where已不能知足使用,咱们就须要用到having了数据
sql:
SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING count_tmp>1;
看执行结果
值得注意的是having后面跟的条件判断的字段必须是聚合函数返回的结果,不然sql会报错,例如:
SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING score>1;