如何计算表中给定的分钟和第二列的时间差异?

时间:2014-08-28 15:02:40

标签: mysql sql database

我有一张运动赛事表。每行标注该特定事件的分钟和秒。只有一种事件类型显示游戏已停止。我的目标是计算球在游戏中并且游戏正在运行的总游戏时间。我的目的是从整个游戏时间中减去所有游戏停止事件和下一个事件之间的总时间。通过这种方式,我只能在球进入游戏时经过时间。

我的问题是,如何将这两个单独的列(分钟,秒)转换为没有小时段的正确MM:SS格式,并从以下事件时间中减去一个事件的时间?

event_id    minute    second
A           0         1
B           0         15
GameStop    0         45
B           0         55 subtract above row from this row, find 10 sec off time
C           1         15
D           1         37
GameStop    1         42
C           2         47 subtract above row from this row, find 55 sec off time
....
GameEnd     105       00

105分钟 - (10秒+ 55秒+ ....)=游戏未暂停的总游戏时间

除时间格式问题外,关于整个问题,欢迎提出任何建议。

1 个答案:

答案 0 :(得分:1)

事件ID事件StartTime EndTime差异

ID1 GameSession 1:00:00 AM 1:00:45 AM 0:00:45

ID1 GamePause 1:00:45 AM 1:00:55 AM 0:00:10

ID1 GameSession 1:00:55 AM 1:01:42 AM 0:00:47

ID1 GamePause 1:01:42 AM 1:02:47 AM 0:01:05

ID1 GameSession 1:02:47 AM 2:45:00 PM 1:42:13

更好的方法是以上述格式存储事件。对于每个会话,如果是游戏会话或暂停会话,则将开始和结束时间发布在同一行中。同时将开始和结束之间的差异发布到另一列。

使用以下查询,您可以得到任何你想要的东西。

总时间:

通过EventId从Event_table组中选择sum(差异),EventId;

游戏会话时间:

选择sum(差异),EventId,来自Event_table的事件,其中Event =' GameSession' group by EventId,Event;

暂停会话时间:

选择sum(差异),EventId,来自Event_table的事件,其中Event =' GamePause' group by EventId,Event;

希望这会有所帮助!!!