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

So erhalten Sie den zweitgrößten oder drittgrößten Eintrag aus einer Tabelle

SELECT *
FROM (
  SELECT some_column, 
         row_number() over (order by your_sort_column desc) as row_num
  FROM some_table
) t
WHERE row_num = 3


Wenn Sie erwarten, dass mehr als eine Zeile denselben Wert in your_sort_column hat Sie können auch die Funktion rank() verwenden

SELECT *
FROM (
  SELECT some_column, 
         rank() over (order by your_sort_column desc) as row_rank
  FROM some_table
) t
WHERE row_rank = 3
Dies kann mehr als eine Zeile zurückgeben.