Een analytische functie gebruiken
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
De analytische functies RANK
, DENSE_RANK
, en ROW_NUMBER
zijn identiek, behalve hoe ze omgaan met banden. RANK
gebruikt een sportief proces om gelijkspel te verbreken, dus als twee rijen gelijk zijn voor een rang van 1, heeft de volgende rij een rangorde van 3. DENSE_RANK
geeft beide rijen die gelijk staan voor de eerste plaats een rangorde van 1 en kent vervolgens de volgende rij een rangorde van 2 toe. ROW_NUMBER
verbreekt willekeurig de gelijkspel en geeft een van de twee rijen met de laagste waarde een rang van 1 en de andere een rang van 2.