Usar una función analítica
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
Las funciones analíticas RANK
, DENSE_RANK
y ROW_NUMBER
son idénticos excepto por cómo manejan los lazos. RANK
utiliza un proceso de estilo deportivo para desempatar, de modo que si dos filas empatan para un rango de 1, la siguiente fila tiene un rango de 3. DENSE_RANK
otorga a las dos filas empatadas en el primer lugar una clasificación de 1 y luego asigna a la siguiente fila una clasificación de 2. ROW_NUMBER
rompe arbitrariamente el empate y otorga a una de las dos filas con el valor más bajo un rango de 1 y a la otra un rango de 2.