MySQL:如何追踪球员职业生涯中的总杀戮数

MySQL:如何追踪球员职业生涯中的总杀戮数,mysql,sql,Mysql,Sql,我有一个包含4个基本列的表结构: 匹配id 日期 玩家id 杀死(当前游戏中的玩家) 该表将包含许多不同玩家ID的数据,我想计算的是每个玩家在按日期asc排序的每场比赛后(从他在给定时间点玩过的所有比赛中)总共产生了多少杀戮 例如,如果他在第一场比赛中被杀20次,那么他的职业生涯总和是20次。如果他在下一场比赛中得到15次杀戮,他的职业生涯杀戮是35次。我想要一个查询,显示每场比赛后的职业生涯总死亡人数 之前我通过循环python中的所有行并跟踪所有玩家的死亡来解决这个问题,但我认为有更好的方法

我有一个包含4个基本列的表结构:

  • 匹配id

  • 日期

  • 玩家id

  • 杀死(当前游戏中的玩家)

  • 该表将包含许多不同玩家ID的数据,我想计算的是每个玩家在按日期asc排序的每场比赛后(从他在给定时间点玩过的所有比赛中)总共产生了多少杀戮

    例如,如果他在第一场比赛中被杀20次,那么他的职业生涯总和是20次。如果他在下一场比赛中得到15次杀戮,他的职业生涯杀戮是35次。我想要一个查询,显示每场比赛后的职业生涯总死亡人数


    之前我通过循环python中的所有行并跟踪所有玩家的死亡来解决这个问题,但我认为有更好的方法来解决这个问题。

    好吧,这种查询很容易实现,MySQL 8.0中最终引入了:

    select 
      player_id , 
      match_id , 
      date , 
      kills ,
      sum(kills) over (partition by player_id order by date asc , match_id asc) as career_kills
    from `match`;
    
    在这里,当
    上的
    中出现
    排序时,我们依赖于窗口帧的默认设置,这相当于前一行和当前行之间的
    范围


    那么,在选择
    SUM(kills)
    的同时,选择
    GROUP BY player\u id
    怎么样?使用GROUP BY,我计算球员从现在起到今天整个职业生涯的总杀球数(?),而我想要的是每场比赛后的总职业杀球数。所以对于每一个游戏,我想要一个更新的“玩家职业生涯总杀数”,你如何区分游戏实例?你应该在那里有某种遭遇ID。每个游戏的游戏ID都是唯一的。游戏还是游戏遭遇?你说的“游戏”是什么意思。这种描述非常模糊和笼统。我的意思是,我可以一天玩三次Quake3,游戏id将保持不变,但每场比赛都有一个唯一的比赛id,用于与我一起玩的每个球员。谢谢,但当我在DB fiddle(以及我自己的数据库)中运行它时,它会返回以下错误。“模式错误:错误:ER_PARSE_错误:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解第7行“match”附近使用的正确语法“
    match
    是MySQL保留字。如果您确实想将其用作表名,请将其用“`”括起来