首页 文章

MySQL:基于条件的单列的前n个和后n个记录的总和

提问于
浏览
-1

是否有可能计算出单个列的前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

现在它应该计算前五个超额总和,并计算每个球员的最后五个超额总和,并告诉我哪些球员得分前五次超过多少,以及他们在过去五次超过多少得分 .

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个总和显示在一起并显示出来 .

请给我建议或解决方案 . 我会非常感激的!

1 回答

  • 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
    

相关问题