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's在Employees表中.
以上查询引用自如何在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将给同一薪水的所有员工提供相同的级别,例如,您将获得第五高薪和所有具有该薪水的员工.