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

如何用Oracle SQL查询STAFF表中各职业薪资最高的员工?

查询各职业薪资最高的员工(Oracle SQL)

针对你的STAFF表,这里提供两种常用的Oracle SQL实现方式,均支持处理同一职业存在多名薪资并列最高员工的场景:

方法一:使用窗口函数(推荐)

窗口函数RANK()可以高效地对每个职业的员工按薪资降序排名,筛选出排名为1的记录即可:

SELECT 
    Staff_ID,
    First_Name,
    Last_Name,
    Occupation,
    Salary
FROM (
    SELECT 
        s.*,
        RANK() OVER (PARTITION BY Occupation ORDER BY Salary DESC) AS salary_rank
    FROM STAFF s
) ranked_staff
WHERE salary_rank = 1;
  • PARTITION BY Occupation:按职业分组
  • ORDER BY Salary DESC:每组内按薪资降序排列
  • RANK():同薪资的员工会获得相同排名,确保并列最高薪资的员工都被返回

方法二:使用关联子查询

通过子查询获取每个职业的最高薪资,再匹配主表中对应职业且薪资等于该最大值的员工:

SELECT 
    s1.Staff_ID,
    s1.First_Name,
    s1.Last_Name,
    s1.Occupation,
    s1.Salary
FROM STAFF s1
WHERE s1.Salary = (
    SELECT MAX(s2.Salary)
    FROM STAFF s2
    WHERE s2.Occupation = s1.Occupation
);

两种方法对比

  • 窗口函数:执行效率更高,适合数据量较大的场景,逻辑清晰易维护
  • 关联子查询:逻辑直观,适合不熟悉窗口函数的开发者

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:47:06