Восстановление n-й записи - PullRequest
0 голосов
/ 10 мая 2011

У меня есть таблица зарплат, где я хочу найти 2-ую самую большую запись о зарплате, 3-ую самую большую запись о зарплате и так далее.Чтобы получить вторую по величине запись, я использую следующий запрос

 Select Top 1 * from SalaryTable
  where salary < (Select Max(Salary) from SalaryTable)
  order by Salary desc

Аналогично, как найти третью по величине запись или четвертую по величине запись и т. Д.?Есть ли способ получить определенные записи?

Ответы [ 4 ]

3 голосов
/ 10 мая 2011

вы можете получить, используя RANK () function in SQL Server

;WITH CTE AS
(
SELECT ..., RANK() OVER (ORDER BY emp_salary) AS rn
FROM myTable
)
SELECT ...
FROM CTE
WHERE rn = n -- (value of should be replace with numberic number for ex. 1, 2, 3)
3 голосов
/ 10 мая 2011

Использовать функцию RANK ()

SELECT * 
  FROM 
        (SELECT *
                ,RANK() OVER (ORDER BY salary) AS SalRnk 
         FROM SalaryTable) AS tblSal      
 WHERE tblSal.SalRnk   = 2 -- for second highest record. change this value to 1,2,3,4 etc... for various rank records

http://msdn.microsoft.com/en-us/library/ms189798.aspx

1 голос
/ 10 мая 2011
SELECT TOP 1 salary
FROM (
SELECT DISTINCT TOP n salary
FROM employee
ORDER BY salary DESC) a
ORDER BY salary
where n > 1 (n is always greater than one)
0 голосов
/ 28 июня 2011

Вы можете поставить любое значение вместо n, это даст вам самую большую зарплату.

select top 1 salary 
from(Select Distinct top n salary from Salary order by desc)a 
order by salary Asc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...