2016-06-15 2 views
0

я таблица называется данными с колоннами:MySQL Средняя температура указания количества дней

  • дата [временная метка]
  • температура [INT (11)]
  • влажности [INT (11)]

(например, ... Дата: 2016-06-11 10:07:22, температура: 22, влажность: 50)

я получаю новую запись каждые 60 секунд.

Мне интересно, можно ли определить запрос, который будет возвращать среднюю температуру и влажность каждого часа в течение определенного количества дней. Мне нужен часовой показатель за вчера (1 день), на прошлой неделе (последние 7 дней) и в прошлом месяце (последние 30 дней).

+1

Этот запрос будет очень медленно во всех случаях ... Но это будет что-то вроде: 'ВЫБРАТЬ AVG (температура), DATE (дата), HOUR (дата) по данным GROUP BY DATE (дата), HOUR (date) ' – Marki555

+0

Thats именно то, что я искал ... Когда вы увидите это, все имеет смысл, но я не мог понять это! – from

+0

Если этот ответ вам подходит, отметьте его как принятый. – Marki555

ответ

0

Чтобы получить среднее значение за каждый час, нам нужно указать GROUP BY строки на день + час.

Пример запроса:

SELECT AVG(temperature), DATE(date), HOUR(date) FROM data GROUP BY DATE(date), HOUR(date) 
+0

На основании ответа Marki555 это то, что я наконец сделал: SELECT AVG (температура) 'avgtemp', AVG (влажность)' avghum', DATE (дата) 'day', HOUR (дата)' hour' FROM data WHERE date> = now() - INTERVAL 7 DAY GROUP BY day, hour ORDER BY date DESC; БЛАГОДАРЯ !!! – from

+0

... просто интересно, если его легко изменить запрос, чтобы сделать то же самое среднее, но на каждые 6-12 часов .... когда я рисую целый месяц информации на диаграмме, он выглядит действительно забитым – from

+0

Да, вам просто нужно просто указать, какие строки будут «свернуты» (сгруппированы) в один ... например, «FLOOR (HOUR (date)/12)» будет выполняться каждые 12 часов (первые 12 часов будут выводиться 0, оставшиеся 12 часов будут выводиться 1). – Marki555

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