Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wählen Sie den zweithöchsten Mindestwert in Oracle aus

Verwenden Sie eine Analysefunktion

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

Die analytischen Funktionen RANK , DENSE_RANK , und ROW_NUMBER sind identisch, außer wie sie mit Bindungen umgehen. RANK verwendet einen sportlichen Prozess zum Aufheben von Gleichständen. Wenn also zwei Reihen den Rang 1 haben, hat die nächste Reihe den Rang 3. DENSE_RANK gibt beiden Zeilen, die den ersten Platz teilen, den Rang 1 und weist dann der nächsten Zeile den Rang 2 zu. ROW_NUMBER bricht willkürlich den Gleichstand und gibt einer der beiden Zeilen mit dem niedrigsten Wert den Rang 1 und der anderen den Rang 2.