---查询出每个部门的平均工资---分组查询中,出现在group by后面的原始列,才能出现在select后面---没有出现在group by后面的列,想在select后面,必须加上聚合函数。---聚合函数有一个特性,可以把多行记录变成一个值。select e.deptno,avg(e.sal)from emp e
groupby e.deptno;---查询出平均工资高于2000的部门信息select e.deptno,avg(e.sal)from emp e
groupby e.deptno
havingavg(e.sal)>2000;---所有条件都不能使用别名来判断---比如下面的条件语句也不能使用别名来当条件select ename,sal s from emp where sal>1500;
---查询出每个部门工资高于800的员工的平均工资select e.deptno,avg(e.sal) asal
from emp e
where e.sal>800groupby e.deptno;
where和having的区别
-where是过滤分组前的数据,having是过滤分组后的数据
- 表现形式:where必须在groupby之前,having是在groupby之后。
- 查询出每个部门工资高于800的员工的平均工资
- 然后再查询出平均工资高于2000的部门
select e.deptno,avg(e.sal) asal
from emp e
where e.sal>800groupby e.deptno
havingavg(e.sal)>2000;