Użyj funkcji analitycznej
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
Funkcje analityczne RANK
, DENSE_RANK
i ROW_NUMBER
są identyczne, z wyjątkiem tego, jak radzą sobie z krawatami. RANK
wykorzystuje proces łamania remisów w stylu sportowym, więc jeśli dwa rzędy remisują na pozycji 1, następny rząd ma pozycję 3. DENSE_RANK
daje obydwóm wierszom zajmującym pierwsze miejsce w rankingu 1, a następnie przypisuje następnemu wierszowi w rankingu 2. ROW_NUMBER
arbitralnie przerywa remis i przyznaje jednemu z dwóch wierszy o najniższej wartości ocenę 1, a drugiemu ocenę 2.