Другой способ - использовать функцию DENSE_RANK; также, если вы избегаете MIN / MAX, вы можете получить любые произвольные значения Nth по мере необходимости:
with q as (
select sal, dr from (
select distinct
sal
,DENSE_RANK() OVER (ORDER BY sal DESC) dr
from emp
) where dr in (1,2,10)
)
select (select sal from q where dr = 1) first
,(select sal from q where dr = 2) second
,(select sal from q where dr = 10) tenth
from dual;
Запрос (q) должен быть материализован, чтобы его многочисленные запросы не приводили к дополнительным проходам через данные.