我试图计算出每个的一般响应时间。信息。因此,每次 SENDER 向 RECEIVER 发送消息时,经过多少秒(认为转换为 UNIX 时间戳是合适的解决方案,然后除以),用户才做出响应。
我有这张表:
+--------------+----------+
| Field | Type |
+--------------+----------+
| msg_id | int(11) |
| msg_sender | int(11) |
| msg_receiver | int(11) |
| msg_date | datetime |
| msg_message | longtext |
+--------------+----------+
我已经尝试了大约一个小时来弄清楚如何解决这个问题,而我所有的解决方案都非常长、复杂和/或效率低下,这让我想知道,通过 MySQL 是否可能/最有效。
也许你们中的一些人可以为我指出正确的方向。
select t1.*, min(t2.msg_date) as response_date
from mytable t1 join mytable t2
on t1.msg_sender=t2.msg_receiver and t2.msg_sender=t1.msg_receiver and t2.msg_date>t1.msg_date
group by t1.msg_sender,t1.msg_receiver,t1.msg_date
对于 t1 中的每条消息,我们都会获得在 t1 消息之后发送的相应答案,并将它们分组以获得最小响应日期(第一个答案日期)。
将上面的选择放入子查询中并查找响应日期的平均值 - msg_date
更新
您使用了不正确的表 m2.* 我用 m1.* 替换了,结果就在那里
SELECT
AVG(UNIX_TIMESTAMP(response_date) - UNIX_TIMESTAMP(msg_date)),
AVG(response_date - msg_date)
FROM
(SELECT
m1.*,
min(m2.msg_date) as response_date
FROM
edu_messages m1
JOIN
edu_messages m2 ON m1.msg_sender = m2.msg_receiver AND m2.msg_sender = m1.msg_receiver AND m2.msg_date > m1.msg_date
GROUP BY
m1.msg_sender,
m1.msg_receiver,
m1.msg_date) AS table1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)