SQL查询查找SQL Server中的顶行

时间:2012-04-13 11:05:40

标签: sql-server

在SQL Server中,我试图获得前5名的薪水。

我有薪水

5000
5000
4500
4500
3000
2000 
1000
500
400

我想得到

5000
5000
4500
4500
3000
2000
1000 

5 个答案:

答案 0 :(得分:3)

SELECT TOP 5 salary FROM your_table
ORDER BY salary DESC

答案 1 :(得分:2)

如果你想获得前5个不同的工资(无论相同金额可能出现多少次),你需要使用DENSE_RANK()排名功能和CTE来实现这一目标:

DECLARE @salaries TABLE (salary DECIMAL(18,4))

INSERT INTO @salaries VALUES(5000)
INSERT INTO @salaries VALUES(5000)
INSERT INTO @salaries VALUES(4500)
INSERT INTO @salaries VALUES(4500)
INSERT INTO @salaries VALUES(3000)
INSERT INTO @salaries VALUES(2000)
INSERT INTO @salaries VALUES(1000)
INSERT INTO @salaries VALUES(500)
INSERT INTO @salaries VALUES(400)

;WITH SalariesRanked AS
(
    SELECT 
        Salary, 
        SalaryNumber = DENSE_RANK() OVER(ORDER BY Salary DESC)
    FROM    
        @salaries
)
SELECT salary
FROM SalariesRanked 
WHERE SalaryNumber <= 5

这会产生如下输出:

salary
5000.0000
5000.0000
4500.0000
4500.0000
3000.0000
2000.0000
1000.0000

答案 2 :(得分:1)

select salary
from
  (
    select salary,
           dense_rank() over(order by salary desc) as rn
    from YourTable
  ) as T
where rn <= 5

试试SE-Data

答案 3 :(得分:0)

查看使用TOP (Transact-SQL)

答案 4 :(得分:0)

SELECT TOP 5 Salary
FROM [Table]
GROUP BY Salary
ORDER BY Salary DESC

您需要对查询进行分组以避免重复工资。