2016-11-12 3 views
0

У меня есть структуру БД так:Mysql - Как найти дубликаты записей в течение периода времени

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

Не граф '2'? ?!? – Strawberry

+0

nop count 1, потому что было 1 событие, когда мы обнаружили 2 состояния 0 после друг друга –

+0

, если мы обнаружили 3 записи друг после друга со статусом 0, тогда счетчик должен быть 2, если найдено 4, то счет должен быть 3 aka 3 минуты –

ответ

-1

выберите IP, дт, граф (идентификатор) в качестве НКТ от ip_check где TIMESTAMPDIFF (МИНУТЫ, дт, NOW())> 1 и status = 0 группа по ф

+0

Довольно близко, но это не строит 2 записи со статусом 0, это также считается, если только 1 запись со статусом 0. Также он должен создать несколько записей, если он нашел несколько результатов с этим запросом. http://www.sqlfiddle.com/#!2/b88d5d/1 –

+0

В приведенном примере он должен отображать 2 результата, каждый из которых имеет счет 1 для каждого ip, поскольку каждый из них произошел один раз 0 - 0, если он произошел 3 раза, как 0-0-0 это должно быть счет 2 –

Смежные вопросы