我有這個問題,我有表XYZ這些值之間的次數差:MySQL的:最接近行
的product_id,USER_NAME,EVENT_TYPE,EVENT_TIME
ABCD123,用戶1,REPAIR,2017年1月16日14點51分28秒
ABCD123,用戶1,REPAIR DONE,2017年1月16日15時51分28秒
ABCD123,用戶1,修理,2017年1月16日16時51分二十八秒
ABCD123,user1, REPAIR DONE,2017-01-16 18:51:28
怎樣才能獲得第一次維修完成和第一次維修和第二次維修完成和第二次維修之間的時間差? 我嘗試這樣做:
select a.product_id, a.user_name, b.event_time as start_time, a.event_time as end_time, FORMAT((TIMESTAMPDIFF(SECOND, b.event_time, a.event_time)/3600),2) as difference
FROM XYZ a
join XYZ b
ON a.product_id = b.product_id and a.user_name = b.user_name and a.event_type = 'REPAIR DONE' and b.event_type = 'REPAIR'
group by a.product_id, a.user_name
order by a.event_time asc
但是從某些原因,結果是這樣的:
ABCD123,用戶1,差異1小時
ABCD123,用戶1,差4小時
正確的是:
ABCD123,用戶1,差1小時
ABCD123,用戶1,差2小時
換句話說,在第二行我得到第一修復和DONE DONE代替第二修復和第二修復第二修復之間的差的結果。
有人可以給我一些建議嗎?
我很抱歉,我無法讓您的解決方案正常工作,但可能是我的問題。 – Raymond
你可以在http://sqlfiddle.com/上發佈一些表格,我會檢查它 –
你好,我通過電子郵件向你發送了樣本數據,sqlfiddle對我來說似乎對第一次看起來有點困惑。對不起。謝謝你的嘗試。 – Raymond