2014-08-28 82 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