Oracle
 sql >> Base de données >  >> RDS >> Oracle

Sélectionnez la deuxième valeur minimale la plus élevée dans Oracle

Utiliser une fonction analytique

SELECT value
  FROM (SELECT value,
               dense_rank() over (order by value asc) rnk
          FROM table)
 WHERE rnk = 2

Les fonctions analytiques RANK , DENSE_RANK , et ROW_NUMBER sont identiques à l'exception de la façon dont ils gèrent les liens. RANK utilise un processus de style sportif pour départager les égalités, donc si deux rangées sont à égalité pour un rang de 1, la rangée suivante a un rang de 3. DENSE_RANK donne aux deux lignes à égalité pour la première place un rang de 1, puis attribue à la ligne suivante un rang de 2. ROW_NUMBER rompt arbitrairement l'égalité et donne à l'une des deux lignes avec la valeur la plus basse un rang de 1 et l'autre un rang de 2.