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

Zweithöchster Wert aus der Tabelle von Oracle DB

Ich würde eine Fensterfunktion verwenden:

select *
from (
  select u.*, dense_rank() over (order by balance desc) as rnk
  from users u
) t
where rnk = 2;

Ich glaube nicht, dass es einen großen Leistungsunterschied zu Ihrer Abfrage geben wird (insbesondere nicht mit einem Index auf balance ), aber meiner Meinung nach ist es einfacher zu lesen und zu pflegen.