2016-01-25 25 views
0

假设我有这样计数没有数据的时间间隔超过

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。但是我没有得到实际上我可以将它应用于我的诉讼中。请给我一些提示,告诉我如何处理这件事。 在此先感谢。

+0

为什么“12:24:22是2 12:25:22是3 12:26:22是3”?请更好地解释它..我会尽力回答你..等待你的评论或编辑 –

+0

我已编辑,请检查@LucaGiardina –

回答

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 

注意,这将在10场比赛给予与start_times分钟在规定时间的两边。

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答案工程太