我的 table :
USERID ------ SCORE
1999 -------- 100
1999 -------- 230
2000 -------- 210
我有很多USERID
,我需要GROUP BY USERID
来SUM每个USERID
的所有分数 -并做出最终的排名。
我需要这个:
USERID ----- SCORE ---- USERRANK
1999 ------ 330 ------ 1
2000 ------ 210 ------ 2
有了这个:
SELECT USERID, SUM(SCORE), (@rownum := @rownum + 1) UserRank
FROM RESPOSTAS GROUP BY USERID, (SELECT @rownum := 0)
ORDER BY SUM(SCORE) DESC
我有:
USERID ----- SCORE ---- USERRANK
1999 ------ 330 ------ 1
2000 ------ 210 ------ 1
所有 UserID 具有相同的 UserRank..
出了什么问题?
最佳答案
您必须在外部查询中使用变量,例如:
SELECT USERID, sum_score,
@rownum := @rownum + 1 AS UserRank
FROM (
SELECT USERID, SUM(SCORE) AS sum_score
FROM RESPOSTAS
GROUP BY USERID ) AS t
CROSS JOIN (SELECT @rownum := 0) AS v
ORDER BY sum_score DESC
关于mysql - SQL - 如何使用总和和顺序进行排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35820414/