gpt4 book ai didi

sql - 如何从 sql 查询中找到第 n 行?

转载 作者:行者123 更新时间:2023-12-04 14:32:52 25 4
gpt4 key购买 nike

我有一个表,其中的数据是这样的:

Name    Salary
Tom 10000
John 20000
Ram 20000
Danny 15000
Sandy 14000
Riddle 15000

我可以使用 cte 找到第二高的工资;
with cte
as
(
select ROW_NUMBER() over (order by Salary desc) as r,
* from Employee e
)
select * from cte where r=2

但这给出了工资为 20000 的结果“Ram”。我要返回的是工资排名第n位的人的每一条记录。例如,如果我正在寻找 n=2 ,结果将是:
Danny    15000
Riddle 15000

如何修改查询以实现此目的?

最佳答案

使用 DENSE_RANK() :

;WITH cte AS
(
SELECT DENSE_RANK() OVER (ORDER BY Salary DESC) AS r, *
FROM Employee e
)
SELECT *
FROM cte
WHERE r = 2

SQL Fiddle

关于sql - 如何从 sql 查询中找到第 n 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com