mysql - 统计时间间隔内的数据数量超过

标签 mysql group-by

假设我有一张这样的 table

id user_id activity_id start_time           duration
1   1       1          2015-12-02 12:24:22   00:17:25
1   1       2          2015-12-02 12:25:22   00:17:25
1   1       3          2015-12-02 12:26:22   00:17:25
1   1       4          2015-12-02 12:26:22   00:17:25
1   1       4          2015-12-02 12:27:22   00:17:25
1   1       4          2015-12-02 12:29:22   00:17:25
1   1       4          2015-12-02 12:33:22   00:17:25

现在,假设我需要一个查询,例如计算 3 分钟内彼此之间的数字 喜欢 12:24:22 是 4 它得到计数 24 25 和 26 12:25:22 是 2,它得到计数 25 和 24 12:25:22 是 4 它得到计数 25 26 和 27 12:26:22 是 4 它得到计数 24 25 和 26 12:26:22 是 3,它得到计数 26 和 27,即它得到接近 3 分钟的计数。

(但实际上,我的间隔时间是10分钟)。 我需要在每个间隔内计算附近的每一分钟。我看到一些解决方案,例如 MySQL GROUP BY DateTime +/- 3 seconds 。但我不知道如何在我的申请中实际应用它。您能给我一些关于如何使用它的提示吗? 提前致谢。

最佳答案

怎么样:

SELECT t1.start_time, COUNT(*) FROM table AS t1
CROSS JOIN table AS t2
WHERE ABS(TIMESTAMPDIFF(MINUTE, t1.start_time, t2.start_time)) < 10
GROUP BY t1.start_time

请注意,这将在规定时间两侧的 10 分钟内提供 start_times 的匹配。

关于mysql - 统计时间间隔内的数据数量超过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34996863/

相关文章:

MySQL 在连接中仅选择 1 条记录,包括无匹配项

postgresql - 为什么索引中列的顺序对 Postgresql 中的分组很重要?

python - Pandas dataframe 组内的行操作

hadoop - 需要一种方法来过滤 HIVE 中某个 id 具有多个记录的记录的数据

java - java中使用groupby()进行动态分组

mysql - SQL查询从一个表中获取数据,其中特定列等于其他表中的值

mysql - 使用事务运行 3 个数据库查询 1k 次是没有事务的两倍。正确的?

mySQL - 表锁定与行锁定

sql - oracle通过警告解码组

java - 无法从 mySql 数据库 java 检索列值