计算时间间隔内的数据不超过

时间:2016-01-25 15:59:03

标签: mysql group-by

假设我有一个这样的表

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。但我真的不知道我是如何将它应用于我的suation.Can你能给我一些提示如何使用它。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

SELECT a.*, COUNT(a.start_time) AS TOT
FROM `your_table`AS a
INNER JOIN `your_table` AS b
WHERE ABS(TIME_TO_SEC(a.start_time) - TIME_TO_SEC(b.start_time)) < 180
GROUP BY a.start_time

180 = 3分钟(180秒)

@Jonathan Twite的答案也有效

答案 1 :(得分:0)

如下:

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

请注意,这将在规定时间的两分钟内给出与start_times的匹配。