В некоторых пакетах СУБД команда top
может не работать. Тогда как это сделать? Предположим, нам нужно найти третью по величине зарплату в таблице сотрудников. Таким образом, мы выбираем отличную зарплату из таблицы в порядке убывания:
select distinct salary from employee order by salary desc
Теперь среди выбранных зарплат нам нужны 3 верхние зарплаты, для этого пишем:
select salary from (select distinct salary from employee order by salary desc) where rownum<=3 order by salary
Это дает 3 верхних зарплаты в порядке возрастания. Это делает третью по величине зарплату, чтобы перейти на первую позицию. Теперь у нас есть конечная задача печати 3-го по величине числа.
select salary from (select salary from (select distinct salary from employee order by salary desc) where rownum<=3 order by salary) where rownum=1
Это дает третье по величине число. Для любой ошибки в запросе, пожалуйста, дайте мне знать. В основном, чтобы получить n-е наибольшее число, мы можем переписать приведенный выше запрос как
select salary from (select salary from (select distinct salary from employee order by salary desc) where rownum<=**n** order by salary) where rownum=1