mysql - 复杂的sql查询逻辑

标签 mysql sql database

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

假设我们有这样的消息序列:- 用户、代理、用户、用户、代理、用户、用户、代理、用户、代理。

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

有什么建议吗??

最佳答案

你可以试试下面 1. 创建一个临时表让我们说 t1 并使用选择查询将数据插入其中,其中 responder = user 具有最小时间戳并按消息 id 分组的消息。 2. 创建另一个临时表 t2,使用 select query for messages where responder=agent with maximum timestamp 并按消息 id 分组将数据插入其中 3. 现在使用连接和日期减法来获取消息(工单)的响应时间

关于mysql - 复杂的sql查询逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41197772/

相关文章:

mySQL 限制 JOIN 语句中的行数

mysql - 如何检查每个主键值是否在另一个表中被引用为外键

java - Android - 为什么我在 SQLiteOpenHelper onCreate 中收到 NullPointerException?

java - 在 Java 中更新表行时出现问题

php - 将动态数组保存到 MySQL 数据库

php - 将下拉列表中的值从另一个表插入数据库

php - 如何解决 Laravel 中的登录错误

sql - 将 .sql 文件导入我的数据库会乱序输入它们

mysql - 如何在系统启动时在 OS X 中启动分离的 mySQL 服务器?

mysql - DECIMAL类型舍入额外的小数并且不截断mysql