求有点难度的SQL写法

kevin9078 2006-05-07 08:27:02
EMPNO PEMPNO DEPNAME SALARY
00006 00003 FA 2200
00010 00003 FA 2000
00004 00003 FA 1500
00005 00001 ZX 6000
00002 00001 ZX 4000
00007 00001 ZX 3000
..... ..... ... ....

取每个部门(DEPNAME) , 薪水(SALRRY)最高的前两名
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin9078 2006-05-08
  • 打赏
  • 举报
回复
谢谢各位 : select EMPNO,PEMPNO,DEPNAME,salary,rank
from (
select EMPNO,PEMPNO,DEPNAME,salary,rank()
over (partition by DEPNAME order by salary desc) as rank from employee)
where rank<=2 测试OK

kevin9078 2006-05-08
  • 打赏
  • 举报
回复
谢谢各位的支持,问题还是没有解决 , select EMPNO,PEMPNO,DEPNAME,rank
from (
select EMPNO,PEMPNO,DEPNAME,rank() over SALARY(partition by DEPNAME order by salary desc) as rank )
where rank<=2 这段没有看到表的名称要写在哪里
yown 2006-05-08
  • 打赏
  • 举报
回复
也可以用动态语句构造:

1.分别求出每个部门的前二位薪水高的,然后再union
select top 2 * from tbl where EMPN='xxx1'order by salary desc
union
select top 2 * from tbl where EMPN='xxx2'order by salary desc
union
select top 2 * from tbl where EMPN='xxx3' order by salary desc

....
ab5669 2006-05-07
  • 打赏
  • 举报
回复
select EMPNO,PEMPNO,DEPNAME,rank
from (
select EMPNO,PEMPNO,DEPNAME,rank() over SALARY(partition by DEPNAME order by salary desc) as rank )
where rank<=2
lmby 2006-05-07
  • 打赏
  • 举报
回复
select top 2 * from (select EMPNO, max(PEMPNO), DEPNAME, SALARY from tab group by dep order by salary)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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