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

如何在SQL Server中查询表内第三高薪资及对应员工姓名

实现方案

你原有逻辑已经可以正确获取去重后的第三高薪资,只需要将该查询结果作为过滤条件匹配原表即可获取对应员工信息,以下是两种实现方式:

方案1:基于原有代码修改(改动最小)

直接把已有的薪资查询作为子查询,外层匹配原员工表:

SELECT 
    CONCAT(FirstName, ' ', LastName) AS EmployeeName,
    Salary AS ThirdHighestSalary
FROM tbl_Employees
WHERE Salary = (
    SELECT 
        MIN(Salary)
    FROM
        (SELECT DISTINCT TOP 3 Salary
         FROM tbl_Employees
         ORDER BY Salary DESC) AS a
)

方案2:使用DENSE_RANK窗口函数(更灵活通用)

如果需要经常查询不同排名的薪资,更推荐用窗口函数实现,逻辑更直观,也能很好处理薪资并列的场景:

WITH SalaryRankCTE AS(
    SELECT
        CONCAT(FirstName, ' ', LastName) AS EmployeeName,
        Salary,
        -- 薪资从高到低排名,并列薪资排名相同,不跳号
        DENSE_RANK() OVER(ORDER BY Salary DESC) AS RankNum
    FROM tbl_Employees
)
SELECT EmployeeName, Salary AS ThirdHighestSalary
FROM SalaryRankCTE
WHERE RankNum = 3

查询结果说明

基于你提供的测试数据,两种方案执行后返回结果一致:

员工姓名第三高薪资
Mitu Pradhan55000
Dibas Hembram55000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:27:00