如何在SQL Server中的单个查询中查找所有第五高薪员工

Har*_*aid 1 sql sql-server sql-server-2005

如何在SQL Server中的单个查询中查找所有第五高薪员工

DECLARE @result bigint

SELECT TOP 5 @result = EmpID FROM Employees ORDER BY Salary DESC

SELECT @result
Run Code Online (Sandbox Code Playgroud)

上述查询给我在第五最高位置的一个记录,但我想all的的fifth最高薪水的EmpID'sEmployees表中.

以上查询引用自如何在SQL Server中的单个查询中查找第五高工资

mar*_*c_s 13

在SQL Server 2005及更高版本中,您可以使用其中一个排名函数来实现此目的:

;WITH RankingEmployees AS
(
    SELECT 
       EmpID,
       DENSE_RANK() OVER(ORDER BY Salary DESC) 'SalaryRank'
    FROM dbo.Employees 
)
SELECT
   *
FROM
   RankingEmployees
WHERE
   SalaryRank = 5
Run Code Online (Sandbox Code Playgroud)

使用DENSE_RANK将给同一薪水的所有员工提供相同的级别,例如,您将获得第五高薪和所有具有该薪水的员工.