mysql中每行最高x的总和

我有一个列(userid, score)的MYSQL表。 我想将userid组分组并得到一列,其中每个userid的X分数最高。

例如,对于两个最高分数的总和:

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

至:

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

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


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个最高分。 然后将这些与另一个子查询相加。 并且您从唯一的唯一表usercore中为每个唯一的user_id运行整个业务。


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

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

select GROUP_CONCAT(score ORDER BY score DESC) top_scores
from userscore
group by userid
链接地址: http://www.djcxy.com/p/63771.html

上一篇: Sum of x highest per row in mysql

下一篇: Outlook Application.FileDialog not found