Jeg ville bruge en vinduesfunktion:
select *
from (
select u.*, dense_rank() over (order by balance desc) as rnk
from users u
) t
where rnk = 2;
Jeg tror ikke, der vil være den store forskel i ydeevnen på din forespørgsel (især ikke med et indeks på balance
), men efter min mening er det nemmere at læse og vedligeholde.