Använd en analytisk funktion
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
De analytiska funktionerna RANK
, DENSE_RANK
och ROW_NUMBER
är identiska förutom hur de hanterar slipsar. RANK
använder en sportliknande process för att bryta band så om två rader är lika för en rankning av 1, har nästa rad rankningen 3. DENSE_RANK
ger båda raderna delad för första plats rankningen 1 och tilldelar sedan nästa rad rankningen 2. ROW_NUMBER
bryter godtyckligt oavgjort och ger en av de två raderna med det lägsta värdet 1 och den andra 2.