在SQL Server中,我试图获得前5名的薪水。
我有薪水
5000
5000
4500
4500
3000
2000
1000
500
400
我想得到
5000
5000
4500
4500
3000
2000
1000
答案 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)
答案 4 :(得分:0)
SELECT TOP 5 Salary
FROM [Table]
GROUP BY Salary
ORDER BY Salary DESC
您需要对查询进行分组以避免重复工资。