where后面只能写普通字段条件, having后面写聚合函数条件
having要和group by 结合使用,并且写在group by的后面
1. 查询每个部门的平均工资,要求平均工资大于2000
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000; select deptno,avg(sal) a from emp group by deptno having a>2000;
2. 查询每种工作的人数,只查询人数大于1的
select job,count(*) c from emp group by job having c>1;
3. 查询每个部门的工资总和,只查询有领导的员工,并且要求工资总和高于5400
select deptno,sum(sal) s from emp where mgr is not null group by deptno having s>5400;
4. 查询每个部门的平均工资,只查询工资在1000到3000之间的,并且过滤掉平均工资低于2000的部门
select deptno,avg(sal) a from emp where sal between 1000 and 3000 group by deptno having a>=2000;
5. 查询每种工作的人数要求人数大于1个,并且只查询1号部门和2号部门的员工, 按照人数降序排序
select job,count(*) c from emp where deptno in(1,2) group by job having c>1 order by c desc;
原文:https://www.cnblogs.com/star-Java/p/13969927.html