gpt4 book ai didi

sql - 当表有重复的薪水时,使用子查询和dense_rank 的第n 高薪水不匹配

转载 作者:行者123 更新时间:2023-12-04 10:46:52 24 4
gpt4 key购买 nike

我试图使用子查询和密集排名方法从表中获得第 n 个最高工资。
以下是每种方法的结果。

子查询方法:

select Top 1 Salary 
from (
select top 7 Salary from Employee order by Salary desc
) as Result
order by Salary

此方法返回第 7 高薪水为:3000

Dense_Rank 方法:
select * 
from (
select Salary, DENSE_RANK() Over(order by Salary desc) DRank
from Employee
) as Result
where DRank=7

此方法返回第 7 高薪水为:1000

初始表数据:

Employee Table

谁能告诉我哪种方法是正确的,为什么?

最佳答案

DENSE_RANK()不做你想做的。它分配递增的数字,同时为关系提供相同的等级。所以可能有超过 6 条记录的薪水高于排名第 7 的记录。

另一个查询为您提供了正确的结果,但可以使用 OFFSET/FETCH 进行简化。语法,自 2012 版起在 SQL Server 中可用:

select * from employee order by salary offset 6 rows fetch next 1 row only

关于sql - 当表有重复的薪水时,使用子查询和dense_rank 的第n 高薪水不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59668239/

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