我的表:
USERID
我有很多GROUP BY USERID
我需要USERID
到 SUM 每个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
我有:
{{1}}
所有UserID都具有相同的UserRank ..
有什么问题?
答案 0 :(得分:2)
您需要在FROM子句中使用(SELECT @rownum := 0)
并将查询包装在外部查询中,例如:
SELECT user.userid, user.rank, (@rownum := @rownum + 1) as rank
from (
SELECT USERID, SUM(rank) as rank
FROM user GROUP BY USERID
ORDER BY SUM(rank) DESC
) user, (SELECT @rownum := 0) r
这是SQL Fiddle。
答案 1 :(得分:2)