mysql中每行x最高的总和

时间:2011-06-21 14:32:22

标签: mysql

我有一个带有(userid, score)列的MYSQL表。我想对userid进行分组,并获得一列,其中包含每个userid的X最高分数之和。

E.g。对于两个最高分的总和:

userid | score
-------+-------
01     | 1
01     | 1
01     | 2
02     | 1
02     | 2
02     | 3

为:

userid | scoresum
-------+----------
01     | 3
02     | 5

但我似乎无法弄清楚如何在MYSQL中做到这一点。

3 个答案:

答案 0 :(得分:3)

select
  userid,
(
select sum(highestscores)
from (
  select * 
  from userscore us2 
  where us2.userid = us1.userid 
  order by score desc limit 5
)
) as scoresum
from ( select distinct userid from userscore ) us1

所以基本上你需要一个子查询来获得5个最高分。然后,您将这些与另一个子查询相加。并且您从唯一的用户核心表中为每个唯一的user_id运行整个业务。

答案 1 :(得分:0)

select SUM(MAX(col.name)) From table name Group by usedid

答案 2 :(得分:0)

这是一个简单的查询,可以为您提供所有数据。现在你只需要通过/,/拆分top_scores,然后在你的代码中添加它们。另一种方法是存储过程,但我认为这更简单。祝你好运。

select GROUP_CONCAT(score ORDER BY score DESC) top_scores
from userscore
group by userid