Бих използвал прозоречна функция:
select *
from (
select u.*, dense_rank() over (order by balance desc) as rnk
from users u
) t
where rnk = 2;
Не мисля, че ще има голяма разлика в производителността на вашата заявка (особено не с индекс на balance
), но според мен е по-лесно за четене и поддръжка.