Вы можете создать вид (вероятно), который показывает счет каждого игрока.Что-то в этом духе может сработать.
create view player_scores as
select player_id, sum(score)
from scores
group by player_id
Это даст вам по одной строке на игрока с их общим счетом.Имея это представление, ранг прост.
select count(*)
from player_scores
where sum > (select sum from player_scores where player_id = 1)
Этот запрос вернет количество игроков с более высоким счетом, чем player_id = 1.
Конечно, если вы знаете счет вашего игрокаперед выполнением запроса вы можете передать этот показатель в качестве параметра.Это будет выполняться намного быстрее, пока столбец проиндексирован.