Как найти пятую самую высокую зарплату в одном запросе в SQL Server - PullRequest
6 голосов
/ 11 декабря 2008

Как найти пятую самую высокую зарплату в одном запросе в SQL Server

Ответы [ 9 ]

22 голосов
/ 11 декабря 2008

В SQL Server 2005 и 2008 создайте ранжированный запрос подвыбора, затем добавьте предложение where, где rank = 5.

select
  *
from
(
  Select
    SalesOrderID, CustomerID, Row_Number() Over (Order By SalesOrderID) as RunningCount
  From
    Sales.SalesOrderHeader
  Where
    SalesOrderID > 10000
  Order By
    SalesOrderID 
) ranked
where 
  RunningCount = 5
4 голосов
/ 11 декабря 2008

Они работают в SQL Server 2000

DECLARE @result int

SELECT TOP 5 @result = Salary FROM Employees ORDER BY Salary DESC

Синтаксис должен быть близким. Я не могу проверить это в данный момент.

Или вы можете пойти с подзапросом:

SELECT MIN(Salary) FROM (
    SELECT TOP 5 Salary FROM Employees ORDER BY Salary DESC
) AS TopFive

Опять же, не является положительным, если синтаксис точно правильный, но подход работает.

1 голос
/ 30 марта 2011
SELECT MIN(Salary) FROM (
    SELECT TOP 2 Salary FROM empa ORDER BY Salary DESC
) AS TopFive

Он работает правильно, пожалуйста, используйте его.

1 голос
/ 09 февраля 2011

Чтобы найти 5-ую самую высокую зарплату из базы данных, запрос: ..

select MIN(esal) from (
    select top 5 esal from tbemp order by esal desc) as sal

его работа проверить

1 голос
/ 06 июня 2009
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 голосов
/ 23 июля 2010
select * from employee2 e
where 2=(select count(distinct salary) from employee2
         where e.salary<=salary)

работает

0 голосов
/ 03 мая 2010

Приведенный ниже запрос на получение максимальной заработной платы после определенного имени сотрудника.

Просто взгляните на это!

SELECT TOP 1 salary FROM (
    SELECT DISTINCT min(salary) salary
    FROM emp where salary > (select salary from emp where empname = 'John Hell') 
    ) a 
ORDER BY salary
0 голосов
/ 17 июля 2009

Вы можете найти его с помощью этого запроса:

select top 1 salary 
from (select top 5 salary
      from tbl_Employee
      order by salary desc) as tbl 
order by salary asc
0 голосов
/ 11 декабря 2008

Вы можете попробовать что-то вроде:

select salary
from Employees a
where 5=(select count(distinct salary)
         from Employees b
         where a.salary > b.salary)
order by salary desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...