Usar uma função analítica
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
As funções analíticas
RANK
, DENSE_RANK
e ROW_NUMBER
são idênticas, exceto pela forma como lidam com as gravatas. RANK
usa um processo de desempate no estilo esportivo, portanto, se duas linhas empatarem em uma classificação de 1, a próxima linha terá uma classificação de 3. DENSE_RANK
dá a ambas as linhas empatadas em primeiro lugar uma classificação de 1 e, em seguida, atribui à próxima linha uma classificação de 2. ROW_NUMBER
desempate arbitrariamente e dá a uma das duas linhas com o valor mais baixo uma classificação de 1 e a outra uma classificação de 2.