SQL - 如何进行排序 - 使用Sum和Order?

时间:2016-03-05 21:56:27

标签: mysql sql-order-by

我的表:

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 ..

有什么问题?

2 个答案:

答案 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)

您必须在外部查询中使用变量,例如:

@post = Post.find_by(user_id: params[:id])

Demo here