如何在MySQL中找到相同id的两个日期之间的差异?

时间:2013-07-31 04:57:35

标签: mysql date timestamp

我有一个MySQL数据库,其中包含故障单ID,故障单的创建时间以及公司运营商和客户之间每次互动的创建时间。

我希望在客户和公司方面获得相同的票证ID的总等待时间。

  

ID id_ticket id_sender时间

     

1 123 1 2010-04-26 03:32:44

     

2 159 1 2010-04-26 03:40:44

     

3 983 1 2010-04-26 04:44:26

     

4 159 2 2010-04-26 05:12:35

     

5 159 1 2010-04-26 06:25:45

     

6 123 2 2010-04-26 08:46:12

     

7 159 2 2010-04-26 09:36:25

     

8 123 1 2010-04-26 12:48:39

id_side是公司或客户的答案。

有没有办法在MySQL中做到这一点?感谢。

[例如,机票#123的客户总共等待时间(id_sender = 1)是(2010-04-26 08:46:12 - 2010-04-26 03:32:44)+(2010 -04-26 12:48:39 - 2010-04-26 08:46:12)= 18808 + 14547 = 33355 sec。]

2 个答案:

答案 0 :(得分:1)

SELECT id_ticket, TIMEDIFF(MAX(`time`), MIN(`time`))
FROM `table containing ticket ID, create time of ticket and time of interaction`
GROUP BY `id_ticket`

答案 1 :(得分:1)

使用连接条件将表连接到自身,连接行具有相同ticket_id的前一个最高ID:

select sum(TO_SECONDS(a.time) - TO_SECONDS(b.time)) total_wait
from ticket a
join ticket b on b.id = (
    select max(id)
    from ticket
    where id < a.id
    and id_ticket = a.id_ticket)
where a.id_ticket = 123

使用您的数据查看live demo on SQLFiddle,并输出:33355


您实际上可以以类似的方式获得所有等待时间:

select a.id_ticket, sum(TO_SECONDS(a.time) - TO_SECONDS(b.time)) total_wait
from ticket a
join ticket b on b.id = (
    select max(id)
    from ticket
    where id < a.id
    and id_ticket = a.id_ticket)
group by 1

请参阅SQLFiddle for that