复杂的SQL查询逻辑

3
我需要解决一个MySQL问题,并使用MYSQL工具。我处理呼叫中心消息日志。假设我有一个对应于Message_Replies的表格,其列为'id','responder'和'timestamp'。Responder可以有两个值:'agent','user'。回复者为'agent'的条目是我们的代理人回复的条目,回复者为'user'的条目是用户回复的条目。
假设我们有一系列像这样的消息:User, Agent, User, User, Agent, User, User, Agent, User, Agent。
我想要获取此工单的平均响应时间。理想的方法是通过'user'获取第一条消息的时间戳,然后通过'agent'获取第一条消息的时间戳并减去该时间戳以获取响应时间。接下来获取'user'的第一条记录和'agent'的下一条记录,并获取它们之间的时间差。即如果两个连续回复都来自'user',则必须取'用户'的第一次回复并获取'代理'的下一次第一次输入,并获取它们之间的时间差。我不知道如何获取用户的第一次回复和代理的下一次第一次回复的时间差。
有什么建议吗?

1
每个记录是否也有时间戳?这听起来像是一个间隔和岛屿问题。 - Tim Biegeleisen
看起来您的表格缺少(至少)一个字段,以便正确地聚焦于“对话”。我的意思是,您的表格似乎存储了许多用户和许多代理之间的对话(此外,单个代理可能与多个用户进行活动对话)。 - FDavidov
这将会更清晰,如果提供样本数据和期望的结果。 - Gordon Linoff
1个回答

0
你可以尝试以下步骤: 1. 创建一个临时表,比如t1,并使用选择查询将消息中响应者为用户且时间戳最小的数据插入其中,并按消息ID进行分组。 2. 创建另一个临时表t2,并使用选择查询将消息中响应者为代理且时间戳最大的数据插入其中,并按消息ID进行分组。 3. 现在使用连接和日期减法来获取消息(工单)的响应时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接