Предположим, у меня есть таблица с 3 столбцами:
- идентификатор (ПК, интервал)
- метка времени (дата-время)
- название (текст)
У меня есть следующие записи:
1, 2010-01-01 15:00:00, Some Title
2, 2010-01-01 15:00:02, Some Title
3, 2010-01-02 15:00:00, Some Title
Мне нужно сделать записи GROUP BY, которые находятся в пределах 3 секунд друг от друга. Для этой таблицы строки 1 и 2 будут сгруппированы вместе.
Здесь есть аналогичный вопрос: группа Mysql DateTime на 15 минут
Я также нашел это: http://www.artfulsoftware.com/infotree/queries.php# 106а>
Я не знаю, как преобразовать эти методы во что-то, что будет работать в течение нескольких секунд. Проблема с методом в вопросе SO заключается в том, что мне кажется, что он будет работать только для записей, попадающих в интервал времени, который начинается в известной точке. Например, если бы мне нужно было заставить FLOOR()
работать с секундами с интервалом в 5 секунд, время 15:00:04 было бы сгруппировано с 15:00:01, но не сгруппировано с 15:00:06.
Имеет ли это смысл? Пожалуйста, дайте мне знать, если необходимы дополнительные разъяснения.
EDIT: Для набора чисел {1, 2, 3, 4, 5, 6, 7, 50, 51, 60} лучше сгруппировать их {1, 2 , 3, 4, 5, 6, 7}, {50, 51}, {60}, чтобы каждая строка группировки зависела от того, находится ли строка в пределах 3 секунд от предыдущей. Я знаю, что это немного меняет дело.
Я пытаюсь нечетко сопоставить журналы с разных серверов. Сервер № 1 может зарегистрировать элемент «Элемент № 1», а сервер № 2 зарегистрирует тот же элемент «Элемент № 1» в течение нескольких секунд после сервера № 1. Мне нужно выполнить некоторые агрегатные функции в обеих строках журнала. К сожалению, из-за характера серверного программного обеспечения у меня есть только заголовок.
LAG()
, как предложил Рэнди. Мне просто нужно выяснить, как это сделать в MySQL. Я нашел ресурс (explainextended.com/2009/ 10/03/), кажется, делает именно то, что нужно... теперь мне просто нужно во всем этом разобраться. - person Brad   schedule 01.07.2011