如何在某个级别获得用户的位置? (mysql)

问题描述

这是表 (achievements_t):

id Primary int(11) AUTO_INCREMENT
timestamp current_timestamp()
user_id varchar(34)
level varchar(40)
score int(11)
replay mediumblob

现在对于每个级别和特定的 user_id,我想要两个数字,一个位置,两个总条目。

“LevelX 你在 54 个中的第 12 个”

我怎样才能做到这一点?

解决方法

WITH cte AS (
    SELECT *,ROW_NUMBER() OVER (PARTITION BY level ORDER BY score desc) rn
    FROM achievements_t)
)
SELECT cte.user_id,cte.level,cte.rn as userPlace,sum(t.score) as totalEntry
FROM cte cte inner join achievements_t t
WHERE 
t.user_id=cte.user_id
group by user_id,level