Группировка по средним интервалам на таймфрейме

0

Поэтому позвольте сказать, что я хочу отслеживать температуру процессора, с простыми столбцами "дата" и "температура". Я хотел бы посмотреть, в какой период на прошлой неделе наблюдались самые высокие температуры в среднем. Я фиксирую данные каждые 10 минут, поэтому я хочу, чтобы каждый 10-минутный блок усреднялся с тем же блоком с других дней недели.

Так, например:

2018-01-08 02:00:00 78.3
2018-01-08 03:00:00 81.2
2018-01-09 02:00:00 74.1
2018-01-09 03:00:00 75.9

Я хотел бы получить среднее значение каждого дня @02:00:00, каждый день @03:00:00 и т.д. (за исключением реальных данных каждые 10 минут) Точное время жизни варьируется - это не всегда 02:00:02, иногда это может быть 02:00:07 и т.д., поэтому я не могу просто сделать точный условный.

Любая идея, как я буду делать эти данные? Я предполагаю, что я могу использовать GROUP BY для этого, но я теряюсь относительно того, как.

  • 0
    Вы можете отформатировать дату, чтобы иметь часы и 00 для минут, а затем сгруппировать по ним и использовать функцию среднего, чтобы получить среднее значение за этот час. Если вы можете показать структуру таблицы, то я могу помочь с запросом.
  • 0
    Вы можете использовать SELECT DATE_FORMAT(datetimecolumn, "%Y/%m/%e %H") чтобы получить только переменную часа и сгруппировать по ней.
Теги:

1 ответ

0

Формируйте только час и минуту, и группируйте их.

SELECT DATE_FORMAT(date, '%H:%i') AS time, AVG(temperature) AS temp
FROM yourTable
GROUP BY time

Это предполагает, что показания никогда не задерживаются более чем на минуту от ожидаемых 10-минутных периодов - если чтение для 02:10 происходит в 02:11:01 оно не будет помещено в группу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню