sql >> Base de Datos >  >> RDS >> Oracle

Seleccione el segundo valor mínimo más alto en Oracle

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.