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.