Oracle
 sql >> Database >  >> RDS >> Oracle

Seleziona il secondo valore minimo in Oracle

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.