В MySQL 8.x вы можете использовать функции RANK()
или DENSE_RANK()
, чтобы делать то, что вы хотите.Например:
with
a as (
select
level, user, score,
rank() over(partition by level order by score) as rk
from t
),
r as (
select
user,
sum(rk) as score
from a
group by user
)
select
rank() over(order by score),
user, score
from r
Примечание. Ожидаемые результаты немного сбивают с толку, поэтому вам, вероятно, придется настроить этот запрос, как только вы ответите на вопросы, которые я задавал.