You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle SQL中获取第5、6、7高的薪资?

修改后的查询语句

select * from ( 
    select first_name,
           salary, 
           dense_rank() over (order by salary desc) r 
    from emp
) t
where r in (5, 6, 7);

说明

你原查询已经通过dense_rank()实现了按薪资倒序排名,要一次性获取第5、6、7高的薪资,只需把筛选条件从r = 3改成r in (5,6,7)即可。in操作符可以匹配多个指定的排名值,这样就能在一个查询里返回这三个排名对应的所有员工姓名和薪资。

如果存在多名员工薪资相同且排名落在5-7区间的情况,dense_rank()会将他们都返回,这和你原查询的逻辑保持一致。要是你需要严格的“第N个位置”(即使薪资相同也只取对应位置的单条记录),可以把dense_rank()替换成row_number(),但前者更适合处理薪资并列的场景。

内容的提问来源于stack exchange,提问作者vilas patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:52:35