使用 MySQL,我希望能够找出某个代码在过去 30 分钟内的任何 5 分钟内是否有 4 个条目。
name stamp code
a 2013-02-03 13:12:01 red
b 2013-02-03 13:23:01 red
c 2013-02-03 13:23:11 red
d 2013-02-03 13:24:01 green
e 2013-02-03 13:24:05 red
f 2013-02-03 13:24:21 red
g 2013-02-03 13:25:01 red
h 2013-02-03 13:48:01 red
因此,在 2013-02-03 13:50:00,我运行了一个查询,它返回了过去 30 分钟内的条目数,在 5 分钟的时间段内有一组 4 个或更多条目和第一个匹配条目的标记,但仅适用于代码红色条目。
我希望使用此示例表的结果是:5, 2013-02-03 13:23:01
可能在单个查询中?谢谢!
编辑:看到这个查询有什么问题吗?
SELECT COUNT(*), rolling.stamp
FROM mytable thisrow JOIN mytable rolling
ON (thisrow.stamp BETWEEN rolling.stamp AND
rolling.stamp + INTERVAL 5 MINUTE)
WHERE rolling.stamp >= DATE_SUB(NOW(), INTERVAL 30 MINUTE)
AND code = 'red'
GROUP BY 2 HAVING COUNT(*) >= 4
当针对上表运行时,我得到了所需的“5, 2013-02-03 13:23:01”。
PS我用'2013-02-03 13:50:00'代替了这个例子的now()