关于数据库查询的问题

小小白sh 2017-11-23 10:32:24
求平均薪水最高的部门编号

select deptno
from
select avg(sal) avg_sal,deptno from emp groud by deptno)
where avg_sal=
(select max(avg_sal) from
(select avg(sal) avg_sal,deptno from emp groud by deptno))


为什么不可以在求平均薪水最高值的时候直接求出部门编号呢
...全文
204 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
alex259 2017-11-23
  • 打赏
  • 举报
回复
oracle直接开窗,分析函数就好了
碧水幽幽泉 2017-11-23
  • 打赏
  • 举报
回复
Oracle 中没有top命令,,故1楼的写法是错误的。
碧水幽幽泉 2017-11-23
  • 打赏
  • 举报
回复
完全可以在求平均薪水最高值的时候直接求出部门编号:

select avg_sal,deptno
from(select deptno,avg_sal,row_number()over(order by avg_sal) as rn
from(select deptno,avg(sal)over(partition by deptno) avg_sal from emp)
)
where rn = 1
听雨停了 2017-11-23
  • 打赏
  • 举报
回复

SELECT TOP 1 deptno FROM (
SELECT deptno,AVG(sal) AS avg_sal,       
FROM   emp
GROUP BY deptno
) a
ORDER BY avg_sal DESC 
  • 打赏
  • 举报
回复
用rank或者dense_rank分析函数

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧