【问题标题】:Complicated Sql Query Logic复杂的Sql查询逻辑
【发布时间】:2016-12-17 10:48:05
【问题描述】:

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

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

我想获得这张票的平均响应时间。理想的方法是通过 'user' 获取第一条消息时间戳,然后通过 'agent' 获取第一条消息时间戳,然后减去此时间戳以获得响应时间。接下来获取“用户”的第一个条目和“代理”的下一个第一个条目并获取它们的时间差。即,如果两个继续回复来自“用户”,那么我必须接受“用户”的第一个回复并获得“代理”的下一个第一个条目,并获得他们的时差。我不知道如何获取用户第一次回复和代理下一次第一次回复的时间差异。

有什么建议吗??

【问题讨论】:

  • 每条记录是否也有时间戳?这听起来像是一个空白和孤岛问题。
  • 我认为您的表格缺少(至少)一个字段,该字段可以让您正确关注对话。我的意思是,您的表似乎存储了许多用户和许多代理之间的对话(此外,一个代理可能与多个用户进行活动对话)。
  • 有了样本数据和期望的结果,这真的会更清楚。

标签: mysql sql database


【解决方案1】:

你可以试试下面 1. 创建一个临时表,假设为 t1,并使用选择查询将数据插入其中,其中响应者 = 具有最小时间戳的用户并按消息 ID 分组。 2.创建另一个临时表t2,使用选择查询将数据插入其中,其中响应者=代理具有最大时间戳并按消息ID分组 3. 现在使用加入和日期减法来获取消息(票证)的响应时间

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2010-12-01
    • 2015-12-09
    相关资源
    最近更新 更多