1

我有一个 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 中做到这一点?谢谢。

[例如,客户 (id_sender = 1) 等待票 #123 的总等待时间为 (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 秒]

4

2 回答 2

2

将表连接到自身,连接条件是连接的行具有相同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

使用您的数据查看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

于 2013-07-31T06:44:54.863 回答
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`
于 2013-07-31T05:04:54.027 回答