2016-09-15 34 views
0

我有一個包含票據使用日誌的表。我如何分組連續兩行來獲得持續時間? 例如:對於第4行,我應該得到數據庫從兩個時間戳行中獲取持續時間

ticket_id duration 
15874  03:03:31 
15874  01:10:35 

數據例如 enter image description here

表結構 enter image description here

+0

告訴我你想怎麼如上票的時間? – Susang

+0

如果mysql可以分組兩個連續的行,那麼應該是duration = row2.created_at-row1.created_at – Vlad

+0

更新了這篇文章。我希望,這工作。 –

回答

0

我已經創建了一個樣品,其結果將與使用GROUP BY顯示日期從datetime和用戶ID:

SELECT start_log.UserID, TIME(start_log.created_id), TIME(end_log.created_id), 
DATE(start_log.created_id), TIMESTAMPDIFF(
MINUTE , start_log.created_id, end_log.created_id) AS TimeInMin 
FROM sample AS start_log 
INNER JOIN sample AS end_log ON (start_log.UserID = end_log.UserID 
AND start_log.created_id < end_log.created_id) 
GROUP BY TIME(start_log.created_id), UserID 

我指的是持續時間給出分鐘輸出:更新

mysql_output

+0

謝謝你的回答!不幸的是,我得到了最後一個小時的要求,他們可以用同一張票多次進入和退出大樓。該查詢僅匹配第一對。 – Vlad

+0

我確信會發生這種情況,並根據您的示例數據進行了上述操作。走着瞧吧? –

+0

幾乎所有的用戶'1004'都是在10''處出現'12'',之後他在13''處'出'在18''處。從'12'到'13'的時間不應該被計算在內,因爲他在外面 – Vlad