Usa una funzione analitica
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
Le funzioni analitiche RANK
, DENSE_RANK
e ROW_NUMBER
sono identici tranne che per come gestiscono le cravatte. RANK
utilizza un processo in stile sportivo per rompere i pareggi, quindi se due file pareggiano per un rango di 1, la riga successiva avrà un rango di 3. DENSE_RANK
assegna a entrambe le righe in parità per il primo posto un rango di 1 e quindi assegna alla riga successiva un rango di 2. ROW_NUMBER
rompe arbitrariamente il pareggio e assegna a una delle due righe con il valore più basso un rango di 1 e all'altra un rango di 2.