Oracle Oracle 求平均薪水最高的部门的编号

selectavg(sal)avg_sal,deptnofromempgroupbydeptno;这条可以查出平均薪水最大的和其部门编号selectmax(avg_sal... select avg(sal) avg_sal,deptno from emp group by deptno;
这条可以查出平均薪水最大的和其部门编号
select max(avg_sal) ,deptno from
(select avg(sal) avg_sal,deptno from emp group by deptno);
这条语句是错误的。
那我为什么不能直接也一起把最大平均薪水和部门编号直接拿出来呢。什么原因?
求解释,我不需要正确答案,回答我的问题即可。谢谢
展开
 我来答
zyc
2012-08-31 · 知道合伙人软件行家
zyc
知道合伙人软件行家
采纳数:328 获赞数:5073
擅长数据通信、路由器组网、C++语言、数据库SQL语言、GP

向TA提问 私信TA
展开全部
select * from (select avg(sal) as avg_sal,deptno from emp group by deptno) as T2 where avg_sal in (select max(avg_sal) as avg_sal from (select avg(sal) as avg_sal,deptno from emp group by deptno) as T1);
这样就会不报错了。

你想知道为何不能直接得到这个结果,是只想使用第一行吗?
因为:MAX()函数、AVG()函数都是集合函数,两个集合不在同一个平面内啊!
就是从员工集合到部门先得到平均工资,然后再从各部门这个单个集合中得到最高平均工资。
所以得用第二行的句子修改完善后才好。
也是很简单嘛,挺直接了。

现在就可以了,刚才写的是有问题:应该先找到最大,然后查询到等于最大的这个的平均工资和部门
lxr_303
2012-08-31 · TA获得超过473个赞
知道小有建树答主
回答量:875
采纳率:0%
帮助的人:516万
展开全部
首先你这个写法就是错误的,你使用了max函数又查询了部门编号而最后没有分组,语法就错误了。既然要加上group分组才是对的,那你就应该知道这个语句是查询所有的部门编号,然后求出各个部门的最大平均工资。想查出最大的部门id,要在where条件中过滤才行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qbowen
2012-08-31 · TA获得超过165个赞
知道答主
回答量:203
采纳率:0%
帮助的人:166万
展开全部
你应该把max(avg_sal)后面的deptno去掉,这样求出的才是最大平均工资,然后外面再套一层,把平均工资等于max(avg_sal)的记录筛选出来,这样才能得到平均工资最高的部门编号。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hu0829
2012-08-31 · TA获得超过2937个赞
知道大有可为答主
回答量:2251
采纳率:50%
帮助的人:2345万
展开全部
当然可以
解释,当有聚合函数和字段一起出现时候,要使用group by进行分组,你少了group by
select max(avg_sal) ,deptno from
(select avg(sal) avg_sal,deptno from emp group by deptno) Group By deptno
追问
你好像没看我的题目。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一羽倾心YY
2019-02-28
知道答主
回答量:3
采纳率:0%
帮助的人:1745
展开全部
select department_id,avg(salary)
from employees
group by department_id
having avg(salary)=(select
max(avg(salary)) from employees
group by department_id);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式