MySQL:基于条件的单列前n条和后n条记录之和
是否可以从单个列计算前5次和后5次的总和?我的情况是,我必须使用查询来计算它 我必须计算前5次的总和并在不同的列中显示,同样地,我必须计算最后5次的总和并在另一列中显示。我的桌子是这样的:MySQL:基于条件的单列前n条和后n条记录之和,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,是否可以从单个列计算前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
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
SELECT player_key,
sum(runs) as first5overSum
FROM `batsman_scores`
WHERE over<=5
group by player_key
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
现在,它应该计算每个球员的前五局和后五局的总和,并告诉我哪些球员在前五局中得分多少,以及他们在最后五局中得分多少
players first5overSum last5overSum
p1 40 0
p2 50 120
p3 10 60
MySQL查询如下所示:
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
SELECT player_key,
sum(runs) as first5overSum
FROM `batsman_scores`
WHERE over<=5
group by player_key
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
我能够计算出前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
SELECT player_key,
sum(runs) as first5overSum
FROM `batsman_scores`
WHERE over<=5
group by player_key
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
你说的前五个是什么意思?这意味着前五个是什么意思?根据你的数据p1有两个overs overs=1,2,那么你如何得到p1的第一个和最后五个呢?这是一种澄清的方式,确保你得到人们的帮助!英雄联盟“第一个”和“最后一个”表示排序顺序-您可能希望通过解释您的意思以及如何确定前5个和后5个来重新回答一个合法的问题。您想要投票吗?参见前5次表示=>前5次和后5次