求一条sql,在oracle的scott用户下查询各部门工资排在前三名员工的部门编号,部门名称,姓名,工资

prettygirlchq 2012-11-04 01:01:16
求一条sql,在oracle的scott用户下查询各部门工资排在前三名员工的部门编号,部门名称,姓名,工资!谢了.....
...全文
962 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小海葵1 2012-11-05
  • 打赏
  • 举报
回复
WITH table1 AS
(
     SELECT '001' AS bmbh, 'AAA' AS  bmnc,'張三A' AS xm,'1200' AS gz FROM dual
     union all
     SELECT '001' AS bmbh, 'AAA' AS  bmnc,'李四A' AS xm,'1200' AS gz FROM dual
     union all
     SELECT '001' AS bmbh, 'AAA' AS  bmnc,'王五A' AS xm,'1300' AS gz FROM dual
     union all
     SELECT '001' AS bmbh, 'AAA' AS  bmnc,'趙六A' AS xm,'1100' AS gz FROM dual
     union all
     SELECT '002' AS bmbh, 'BBB' AS  bmnc,'張三B' AS xm,'2500' AS gz FROM dual
     union all
     SELECT '002' AS bmbh, 'BBB' AS  bmnc,'李四B' AS xm,'2300' AS gz FROM dual
     union all
     SELECT '002' AS bmbh, 'BBB' AS  bmnc,'王五B' AS xm,'2400' AS gz FROM dual
     union all
     SELECT '002' AS bmbh, 'BBB' AS  bmnc,'趙六B' AS xm,'2600' AS gz FROM dual     
)
SELECT bmbh,bmnc,xm,gz FROM (
select RANK()OVER(PARTITION BY bmbh ORDER BY GZ DESC) AS R,DENSE_RANK()OVER(PARTITION BY bmbh ORDER BY GZ DESC) AS DR,TABLE1.* from table1)
WHERE R <=3 --并列排名时后面不连续
     -- DR <=3 --并列排名时后面连续
yu15tian 2012-11-04
  • 打赏
  • 举报
回复
2楼就是。。。。!
prettygirlchq 2012-11-04
  • 打赏
  • 举报
回复
好像不对吧?
xpingping 2012-11-04
  • 打赏
  • 举报
回复
select 部门名称,姓名,工资
from (select 部门名称,姓名,工资,row_number() over(partition by 部门名称 order by 工资)rn
from tb) 
where rn <=3

17,377

社区成员

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

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