是否可以计算单个列中前5个过滤和后5个过滤的总和?我处于一种情况,我必须使用查询来计算它。
我必须计算前5个的总和并将其显示在不同的列中,同样地,我必须计算最后5个过的总和并将其显示在另一个列中。我的表看起来像这样:
Overs runs players
1 1 p1
1 1 p2
1 4 p2
1 1 p2
1 0 p1
1 0 p1
2 1 p2
2 2 p1
2 3 p1
2 1 p2
现在它应该计算前5个超额总和并计算每个球员的最后5个超额总和,并告诉我哪些球员在前5个球中得分多少以及他们在过去5个比赛得分多少。
players first5overSum last5overSum
p1 40 0
p2 50 120
p3 10 60
MySQL查询如下所示:
SELECT player_key,
sum(runs) as first5overSum
FROM `batsman_scores`
WHERE over<=5
group by player_key
我可以计算前5次的记录,但我不知道如何将每位玩家的最后5次超额总和显示出来并显示出来。
请给我建议或解决方案。我将非常感激!
答案 0 :(得分:1)
我认为你可以使用条件聚合。我不太确定“前五个”和“后五个”是什么意思,但查询看起来像这样:
SELECT bs.player_key,
SUM(CASE WHEN bs.over <= 5 THEN bs.runs ELSE 0 END) as first5overSum,
SUM(CASE WHEN bs.over > bs2.max_over - 5 THEN bs.runs ELSE 0 END) as last5overSum,
FROM batsman_scores bs CROSS JOIN
(SELECT MAX(bs2.over) as max_over
FROM batsman_scores bs2
) bs2
WHERE bs.over <= 5
GROUP BY bs.player_key