我有这样的数据库结构:
id ip status time
----------------------------------------
1 1.1.1.1 1 2016-11-11 21:37:04
2 8.8.8.8 1 2016-11-11 22:37:04
3 1.1.1.1 1 2016-11-11 21:38:04
4 8.8.8.8 0 2016-11-11 22:38:04
5 1.1.1.1 1 2016-11-11 21:39:04
6 8.8.8.8 0 2016-11-11 21:39:04
7 1.1.1.1 1 2016-11-11 21:40:04
8 8.8.8.8 1 2016-11-11 21:40:04
9 1.1.1.1 1 2016-11-11 21:41:04
10 8.8.8.8 1 2016-11-11 21:41:04
11 1.1.1.1 1 2016-11-11 21:42:04
12 8.8.8.8 0 2016-11-11 21:42:04
13 1.1.1.1 1 2016-11-11 21:43:04
14 8.8.8.8 1 2016-11-11 21:43:04
如何计算状态为0且两者之间差异为1分钟的记录?他们必须在彼此之后。
换句话说,如果我们有任意数量的记录具有相同的ip,彼此之后状态为0且时间戳差异为1分钟或更长,则将其添加到计数中。
会产生类似的结果:
ip time count
------------------------------------
8.8.8.8 2016-11-11 22:38:04 1
Sql提供了一个测试答案:
http://www.sqlfiddle.com/#!2/b88d5d/1
感谢。
答案 0 :(得分:-1)
从ip_check中选择ip,dt,count(id)作为cnt
TIMESTAMPDIFF(MINUTE,dt,NOW())> 1 AND constexpr
= 0 group by ip