1
[u][i][b]group by[/b][/i][/u]
查询各个[b]部门[/b]的[b]平均薪水[/b]
将部门[b]编号[/b]和[b]部门平均薪水[/b]一起查出来
好了,现在我想将[b]部门名字[/b]和[b]平均薪水[/b]一起查出来,这么做可以吗?
这么做是查不出结果来的。而且会报这么个错误
为什么呢?
因为这时候其实是按照[b]部门名称[/b]分组的
所以group by的时候添加一个部门名称就可以查出来了
2
[b][i][u]having[/u][/i][/b]
现在,我想查询[b]平均工资[/b]在[b]2000元以上[/b]的部门,怎么查呢?
显示以下错误:
那么该如何写呢?这时候就需要用到 [b]having[/b]关键词来替代[b]where[/b]了
having过滤的是 [b]组条件[/b],而 where 过滤的是[b]单行条件[/b]。
这么写才能得出 [b]平均薪水[/b] [b]大于 2000[/b] 的部门
[u][i][b]group by[/b][/i][/u]
查询各个[b]部门[/b]的[b]平均薪水[/b]
select avg(sal) from emp group by deptno;
将部门[b]编号[/b]和[b]部门平均薪水[/b]一起查出来
select deptno,avg(sal) from emp group by deptno;
好了,现在我想将[b]部门名字[/b]和[b]平均薪水[/b]一起查出来,这么做可以吗?
select d.dname,avg(e.sal) 平均薪水 from dept d,emp e
where d.deptno = e.deptno
group by d.deptno;
这么做是查不出结果来的。而且会报这么个错误
不是 GROUP BY 表达式
为什么呢?
因为这时候其实是按照[b]部门名称[/b]分组的
所以group by的时候添加一个部门名称就可以查出来了
select d.dname,avg(e.sal) 平均薪水 from dept d,emp e
where d.deptno = e.deptno
group by d.deptno,d.dname;
2
[b][i][u]having[/u][/i][/b]
现在,我想查询[b]平均工资[/b]在[b]2000元以上[/b]的部门,怎么查呢?
select deptno,avg(sal) from emp
where avg(sal) > 2000
group by deptno;
显示以下错误:
ERROR 位于第 1 行:
ORA-00934: 此处不允许使用分组函数
那么该如何写呢?这时候就需要用到 [b]having[/b]关键词来替代[b]where[/b]了
having过滤的是 [b]组条件[/b],而 where 过滤的是[b]单行条件[/b]。
select deptno,avg(sal) from emp
group by deptno
having avg(sal) > 2000;
这么写才能得出 [b]平均薪水[/b] [b]大于 2000[/b] 的部门