gpt4 book ai didi

MySQL 获取所选操作的持续时间

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

我有以下用户操作序列以及每个操作的DateTime时间戳。下面是一个示例表

Actions:
+------------+-------------+----------------------+
| session_id | action_name | time |
+------------+-------------+----------------------+
| 123abcd | ADD | 2014-08-27 13:41:02 |
+------------+-------------+----------------------+
| 123abcd | LIKE | 2014-08-27 13:43:02 |
+------------+-------------+----------------------+
| 123abcd | DELETE | 2014-08-27 13:45:02 |
+------------+-------------+----------------------+
| 123abcd | EMAIL | 2014-08-27 13:48:02 |
+------------+-------------+----------------------+
| 123abcd | LIKE | 2014-08-27 13:52:02 |
+------------+-------------+----------------------+
| 546erqr | ADD | 2014-08-27 14:02:02 |
+------------+-------------+----------------------+
| 546erqr | EMAIL | 2014-08-27 14:12:02 |
+------------+-------------+----------------------+
| 546erqr | LIKE | 2014-08-27 14:14:02 |
+------------+-------------+----------------------+

正如您所看到的,用户可以通过 session 执行某些操作。

我有兴趣计算用户在每个 session 发送电子邮件之前所花费的时间

本质上,我想做一个 TIMESTAMPDIFF(SECOND, min(time), max(time))/60 直到 action = EMAIL。我尝试在 SQL 语句中使用 where 子句来执行它,但没有成功。

对于输出,我想要类似的东西:

+------------+-----------------------+
| session_id | time_till_email_mins |
+------------+-----------------------+
| 123abcd | 7 |
+------------+-----------------------+
| 546erqr | 10 |
+------------+-----------------------+

一般来说,如果要进行这样的计算(无论是时间差计算还是计数)直到某个 Action ,人们会如何进行。

希望这是有道理的。如果您有任何疑问,请告诉我

最佳答案

我想你可能想要这个:

select   session_id,
min(time) as first_action_time,
min(case when action_name = 'EMAIL' then time end) as first_email_time,
timestampdiff(second,min(time),min(case when action_name = 'EMAIL' then time end)) as diff_in_secs
from actions
group by session_id

这是 session 的第一个操作与操作名称为“EMAIL”的 session 的第一个操作之间的秒数差异。

关于MySQL 获取所选操作的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25634028/

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