首页 > 解决方案 > 如何在某个级别上获得用户的位置?(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 你已经到位 12 of 54”

我怎样才能做到这一点?

标签: mysqlplacement

解决方案


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

推荐阅读