我在 MySQL 中的某个查询遇到问题,希望有人可以帮助我。
一点背景资料:
我们的“电话即服务”公司提供了一个呼叫中心报告 API。我从他们的 XML 界面中获取的相关字段是:
- 代理名称
- 交互 ID
- origination <-- 这是“来电显示”,并不总是准确的
- 创建时间戳
- 接受时间戳
- 放弃时间戳
- queue_id
在我们的“主要”队列中排队后,每个代理都会接听常规电话(在这种情况下为交互)。create_timestamp 字段是呼叫开始排队到属于“Main”的代理的时间,accept_timestamp 是代理应答呼叫的时间。放弃时间戳是呼叫者厌倦排队并且 1) 挂断,或 2) 按菜单选项转到语音邮件的时间。语音邮件保存为 .mp3 文件,并与新的入站呼叫一样排队到同一组代理,但它与“Main_VM”队列而不是“Main”队列相关联。
棘手的部分是:
如果有呼叫进入并“放弃”到语音邮件,则交互 ID 不会与排队等待座席的语音邮件 .mp3 保持相同。它也不总是以 1 递增……有时在此人排队期间有其他呼叫进来。以下是示例记录片段:
A)
+----------------+--------------+---------------------+---------------------+---------------------+---------------+
| interaction_id | origination | create_timestamp | accept_timestamp | abandon_timestamp | queue_id |
+----------------+--------------+---------------------+---------------------+---------------------+---------------+
| 21771 | NNNPPPXXXX | 2012-09-04 08:26:15 | 0000-00-00 00:00:00 | 2012-09-04 08:27:17 | Main |
| 21772 | NNNPPPXXXX | 2012-09-04 08:27:44 | 2012-09-04 08:32:07 | 0000-00-00 00:00:00 | Main_VM |
+----------------+--------------+---------------------+---------------------+---------------------+---------------+
B)
+----------------+--------------+---------------------+---------------------+---------------------+---------------+
| interaction_id | origination | create_timestamp | accept_timestamp | abandon_timestamp | queue_id |
+----------------+--------------+---------------------+---------------------+---------------------+---------------+
| 2195 | AAAAAAAAAA | 2011-10-28 09:21:02 | 2011-10-28 09:23:50 | 0000-00-00 00:00:00 | Main |
| 2197 | NNNPPPXXXX | 2011-10-28 09:22:37 | 0000-00-00 00:00:00 | 2011-10-28 09:26:42 | Main |
| 2199 | BBBBBBBBBB | 2011-10-28 09:23:38 | 2011-10-28 09:27:23 | 0000-00-00 00:00:00 | Main |
| 2200 | CCCCCCCCCC | 2011-10-28 09:24:40 | 2011-10-28 09:33:09 | 0000-00-00 00:00:00 | Main |
| 2201 | NNNPPPXXXX | 2011-10-28 09:27:16 | 2011-10-28 09:42:28 | 0000-00-00 00:00:00 | Main_VM |
+----------------+--------------+---------------------+---------------------+---------------------+---------------+
例如,在 MySQL 中,我需要能够将 interaction_id 2197 与 2201 以及 21771 与 21772 相关联。我将做一些事情,比如TIMESTAMPDIFF()
计算接听电话的“总”时间、满足和放弃的 SLA 百分比……等等;同时还要考虑营业时间和节假日。我想我已经解决了大部分问题,但我的主要问题是我刚刚描述的。
注意:我打算将“0000-00-00 00:00:00”时间戳更改为 NULL。我还在计划中。