Brug en analytisk funktion
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
De analytiske funktioner RANK
, DENSE_RANK
og ROW_NUMBER
er identiske, bortset fra hvordan de håndterer slips. RANK
bruger en sportslignende proces til at bryde bånd, så hvis to rækker er uafgjorte til en rang på 1, har den næste række en rang på 3. DENSE_RANK
giver begge rækker lige for førstepladsen en rang på 1 og tildeler derefter den næste række en rang på 2. ROW_NUMBER
bryder vilkårligt uafgjort og giver en af de to rækker med den laveste værdi en rang på 1 og den anden en rang på 2.