我有一个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。]
答案 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