我有一个带有(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中做到这一点。
答案 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