2014-08-28 79 views
0

我有一张体育赛事表。每行用该特定事件的分钟和秒钟注释。只有一种事件类型显示游戏已停止。我的目标是计算球在游戏中并且游戏正在运行时的总游戏时间。我的意图是减去所有游戏停止的事件和整个游戏时间的下一个事件之间的总时间。就这样,我只能在比赛中过去一段时间。如何计算表中分钟和第二列的时间差?

我的问题是,如何将这两个单独的列(分钟,秒)转换为没有小时段的正确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 

105min - (10秒+ 55秒+ ....)=总游戏时间,其中游戏没有被暂停

除了时间格式问题,对于整个问题,任何的建议是值得欢迎的。

+2

你真正的问题应该是如何获得正确的开始/停止时间。一旦你明白了,实际的数学将是微不足道的。 – 2014-08-28 15:04:06

+0

模式确实应该使用'date'数据类型来使这种操作逻辑和直接。 – wallyk 2014-08-28 15:22:33

回答

1

事件ID事件开始时间结束时间差

ID1 GameSession 1:00:00 AM。上午01时00分45秒〇点○○分45秒

ID1 GamePause上午01时00分45秒1:00 :55 AM 0时00分10秒

ID1 GameSession上午一点00分55秒上午01时01分42秒〇时00分47秒

ID1 GamePause上午01时01分42秒上午01时02分47秒0 :01:05

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

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

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

总时间:

选择和(差),从事件ID组Event_table通过EVENTID;

游戏会话时间:

选择和(差),事件ID,从Event_table事件,其中事件=“由EVENTID GameSession'group,事件;

暂停会话时间:

选择和(差),事件ID,从Event_table事件,其中事件=“由EVENTID GamePause'group,事件;

希望这会有所帮助!

+0

我没有创建表格,所以我应该使用上面解释的格式。 – erogol 2014-08-29 09:57:51