gpt4 book ai didi

mysql - 检查已发送消息的响应时间 - 仅使用 SQL 可能吗?

转载 作者:行者123 更新时间:2023-11-29 02:25:49 25 4
gpt4 key购买 nike

我想弄清楚每个人的一般响应时间。信息。因此,每次 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 消息之后发送的相应答复,并将它们分组以获得最小的响应日期(第一个答复日期)。

将上面的选择放在子查询中并找到 response_date - msg_date 的 AVG

更新您使用的表 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

关于mysql - 检查已发送消息的响应时间 - 仅使用 SQL 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com