2016-12-17 172 views
3

我有一个问题要解决在MySQL中。我正在使用MYSQL工具。我处理呼叫中心消息日志。假设我有一个对应于Message_Replies的表。它的列是'id','responder','timestamp'。响应者可以有两个值: - 'agent','user'。responder ='agent'的条目是我们的代理人回复的条目,而responder ='user'的条目是用户回复的条目。复杂的SQL查询逻辑

Say we have a sequences of messages like this:- User, Agent, User, User, Agent, User, User, Agent, User, Agent.

我希望得到平均响应时间为这张票。理想的方式是通过'user'获取第一个消息时间戳,然后通过'agent'获取第一个消息时间戳,并减去此时间戳以获取响应时间。接下来获得'用户'的第一个条目和'代理'的下一个第一个条目,并获得他们的时间不同。即如果两个继续回复来自'用户',那么我必须通过'用户'来获得第一个回复,并获取下一个'代理人'的第一个回答,并获得他们的时间差。我没有得到如何获得用户首次回复的时间差和代理的下一首答复。

有什么建议?

+1

每个记录是否也有时间戳?这听起来像是一个空白和孤岛问题。 –

+0

我看起来你的表错过了(至少)一个字段,可以正确聚焦到**对话**。我的意思是,您的表似乎存储了许多用户和许多代理之间的对话(此外,单个代理可能与多个用户进行主动对话)。 – FDavidov

+0

这对于样本数据和期望的结果来说会更清楚。 –

回答

0

你可以尝试下面 1.创建一个临时表让我们说t1和插入数据到它使用选择查询的消息,其中responder =用户与最小时间戳和消息的ID分组。 2.创建另一个临时表t2,使用select message查询消息,其中responder =具有最大时间戳的代理并按消息ID分组 3.现在使用连接和日期减法获得消息响应时间(票据)