Используйте аналитическую функцию
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
Аналитические функции RANK
, DENSE_RANK
и ROW_NUMBER
идентичны, за исключением того, как они обрабатывают связи.RANK
использует процесс разрыва связей в спортивном стиле, поэтому, если два ряда связываются с рангом 1, следующий ряд имеет ранг 3. DENSE_RANK
дает обоим рядам, привязанным за первое место, ранг 1, а затемприсваивает следующей строке ранг 2. ROW_NUMBER
произвольно разрывает связь и присваивает одной из двух строк с наименьшим значением ранг 1, а другой ранг 2.