Sql server 2005 SQL Server 2005/2008第n高薪
为了找到我使用的第n个最高工资Sql server 2005 SQL Server 2005/2008第n高薪,sql-server-2005,tsql,Sql Server 2005,Tsql,为了找到我使用的第n个最高工资 select salary from ( select distinct ROW_NUMBER() over (order by salary desc) as rownum,Salary from Employee )a where rownum=2 但是如果我有同样的薪水 70000 70000 60000 50000 50000 当执行查询时,我的薪水是第二高的 70000 instead 60000 如何避免重复?必须区分
select salary from
(
select distinct ROW_NUMBER() over (order by salary desc) as rownum,Salary
from Employee
)a
where rownum=2
但是如果我有同样的薪水
70000
70000
60000
50000
50000
当执行查询时,我的薪水是第二高的
70000 instead 60000
如何避免重复?必须区分的是工资,而不是行号:
SELECT salary FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS rownum, salary
FROM (SELECT DISTINCT Salary FROM Employee) T1
) T2
WHERE rownum=2
必须区分的是工资,而不是行号:
SELECT salary FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS rownum, salary
FROM (SELECT DISTINCT Salary FROM Employee) T1
) T2
WHERE rownum=2
虽然Mark已经给出了一个答案,但我认为您使用了错误的函数。你要的不是行号,而是排名。并根据您希望如何处理重复项,特别是您应该使用 例如:
虽然Mark已经给出了一个答案,但我认为您使用了错误的函数。你要的不是行号,而是排名。并根据您希望如何处理重复项,特别是您应该使用 例如:
以下是使用CTE(公共表表达式)得到的第n个最高值
以下是使用CTE(公共表表达式)得到的第n个最高值
谢谢你的澄清谢谢你的澄清
With Result as
(
select salary ,DENSE_RANK () over(ORDER BY salary DESC) AS Denserank FROM employees
)
select Top 1 salary
FROM Result
where Result. Denserank=2