MySQL Group Ближайшие Временные События - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть таблица MySQL, содержащая журнал с 4 различными событиями.Каждое событие регистрируется каждые 15 или около того минут в отдельной строке, но они не всегда фиксируются в одно и то же время каждый раз.

Структура таблицы:

id  datetime  eventtype  data  

Мне нужно выполнить некоторые вычисления для всех 4 событий, зафиксированных в одном базовом периоде, обычно в течение 5 минут друг от друга.Например, события 1 и 2 могут быть захвачены в 10:41 и 10:42 соответственно, в то время как событие 3 захвачено в 10:44, а событие 4 наступает даже позже в 10: 45.

Проблема заключается вчто любое событие может быть на минуту или более вперед или позади других.Есть ли способ, которым я могу выбрать и сгруппировать строки каждого типа события в течение ближайшего периода?

Следует ожидать некоторой неточности, поскольку возможно, что одно событие не войдет, или даже будет выдвинуто на несколько минут и вместо этого станет частью следующего таймфрейма.Мне просто нужно убедиться, что в каждой данной группе будет действительное событие для каждого типа события (которое я могу проверить во время расчета).

Я начал с group by , нопотерпел неудачу, так как дата и время не одинаковы для каждого события.Это будет большая таблица, поэтому я не думаю, что имеет смысл циклически проходить по строкам и выполнять математику / группировку одну за другой, по крайней мере, я надеюсь, что это не самый лучший способ.Я не уверен, куда обратиться дальше.Будем очень благодарны за любые указатели в правильном направлении!

Пример данных

id  datetime  eventtype  data  
 1   10:41     1          67  
 2   10:45     4          14  
 3   10:42     2          12  
 4   10:44     3          87  
 5   10:57     1          63  
 6   10:59     4          13  
 7   10:59     2          19  
 8   11:01     3          01  

Результаты по желаемому запросу:

          datetime  event1 event2 event3 event4  
Result 1:  10:41     67     12     87     14  
Result 2:  10:57     63     19     01     13
...