Как получить вторую или третью по величине запись из таблицы - PullRequest
11 голосов
/ 19 декабря 2010

Может кто-нибудь сказать, пожалуйста, как найти N-ую самую большую запись из таблицы в Oracle?

Как и для самого большого, мы можем использовать MAX (column_name) Есть ли эффективный способ найти n-ую наибольшую также ?

Ответы [ 12 ]

0 голосов
/ 19 декабря 2010
SELECT DISTINCT (a.sal) FROM EMP A WHERE &N = (
  SELECT COUNT (DISTINCT (b.sal)) FROM EMP B WHERE a.sal<=b.sal
);

Замените &N на желаемый номер.Например, 2 даст вам вторую по величине зарплату.

Если вы используете PL / SQL, просто выполните инструкцию.Это подскажет для N.

0 голосов
/ 19 декабря 2010

Вы можете ORDER BY column name, а затем LIMIT 1,1, чтобы получить второй

edit

К сожалению, тег Oracle не был найден, извините.
ORDER BY column name WHERE ROWNUM = 2 должно работать лучше.

...