powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сделать выборку по времени, выделить старт и стоп
10 сообщений из 10, страница 1 из 1
Помогите сделать выборку по времени, выделить старт и стоп
    #38766776
AonMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть лог файл, такого вида:
2014-10-04 01:16:17 - Открыта дверь подъезда
2014-10-04 01:16:26 - Открыта дверь подъезда
2014-10-04 03:01:14 - Открыта дверь подъезда
2014-10-04 03:01:24 - Открыта дверь подъезда
2014-10-04 04:43:13 - Открыта дверь подъезда
2014-10-04 04:43:23 - Открыта дверь подъезда
2014-10-04 06:44:14 - Открыта дверь подъезда
2014-10-04 06:44:23 - Открыта дверь подъезда
2014-10-04 06:44:38 - Открыта дверь подъезда

Предполагается запихать его в базу MySQL.
Как видите, записи идут с интервалом около 10 секунд (должно определяться в запросе, скажем, N) - первая запись начало события, последняя - конец. Иногда записей внутри интервала N секунд бывает больше (последние 3 строки - 3 записи, но считаем, что событие одно).

Помогите написать запрос, чтоб результат выглядел так:
01:16:17 - 01:16:26 открыта дверь
03:01:14 - 03:01:24 открыта дверь
04:43:13 - 04:43:23 открыта дверь
06:44:14 - 06:44:38 открыта дверь

Если можно, с переходом через 00 часов (думаю, если в базе хранить дату в timestamp - это получится и так).
в инете находил лишь примеры группировки по строго заданным интервалам, скажем, с 00:10 до 00:20, а тут другое.
Заранее спасибо!
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38766784
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AonMaster,

там я не помню как точно разницу времени
считать в секундах, посмотрите в руководстве...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
  event_id
  MIN(timey) AS start_time,
  MAX(timey) AS end_time
FROM
(
SELECT
  if(TIMEDIFF(t.timex-@a) > 10, @b:=@b+1, @b) AS event_id,
  @a:=t.timex AS timey
FROM 
  tableA t, 
  (select @a:=UNIX_TIMESTAMP('2000-01-01 00:00:00'), @b:=0) z
ORDER BY t.timex
) z2
GROUP BY event_id
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38766830
AonMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, ничего себе, как сложно.
Мне кажется, там где-то синтаксис не тот, и подскажите, таблицу назвать table а время должно быть уже переведенное в timestamp и находится в поле t?

а event_id это второе поле, да?
Вложенные запросы никогда не делал, поэтому этот пример не понимаю вообще :(
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38766841
AonMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Incorrect parameter count in the call to native function 'TIMEDIFF'
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38766843
AonMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот моя таблица:

mysql> select * from domofon;
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
+----+---------------------+-------+
| id | date                | event |
+----+---------------------+-------+
|  1 | 2014-10-04 01:16:17 | 1     |
|  2 | 2014-10-04 01:16:26 | 1     |
|  3 | 2014-10-04 03:01:14 | 1     |
|  4 | 2014-10-04 03:01:24 | 1     |
+----+---------------------+-------+
4 rows in set (0.01 sec)
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38768761
AonMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не подскажет?
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38768773
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьми две копии таблицы. Посчитай разность времени (копия 2 минус копия 1). Сгруппируй по записям первой копии. Выбери минимальную, но положительную, разность времени. Отфильтруй записи, где разность больше заданного интервала.
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38768820
AonMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как-то сложно с двумя копиями. Это что, каждый раз перед запросом копировать одну в другую? а таблица-то растёт...

Предложенный выше запрос подошёл бы, если б довести его до ума. У меня не хватает( вот прошу помощи.
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38768847
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AonMasterЭто что, каждый раз перед запросом копировать одну в другую?
Код: sql
1.
FROM table AS t1, table AS t2
...
Рейтинг: 0 / 0
Помогите сделать выборку по времени, выделить старт и стоп
    #38769179
AonMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё равно предложенные Вами манипуляции сложно мне осилить. Я давно не имел дела с SQL, сейчас прогресс ушел далеко. Проект это некоммерческий, изучать весь SQL возможности, увы, нет. Помогите составить запрос, пожалуйста.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сделать выборку по времени, выделить старт и стоп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]