Как мне создать серию почасовых средних в MySQL? - PullRequest
9 голосов
/ 26 января 2009

В моей таблице есть данные с интервалами в десять минут:

2009-01-26 00:00:00      12
2009-01-26 00:10:00      1.1
2009-01-26 00:20:00      11
2009-01-26 00:30:00      0
2009-01-26 00:40:00      5
2009-01-26 00:50:00      3.4
2009-01-26 01:00:00      7
2009-01-26 01:10:00      7
2009-01-26 01:20:00      7.2
2009-01-26 01:30:00      3
2009-01-26 01:40:00      25
2009-01-26 01:50:00      4
2009-01-26 02:00:00      3
2009-01-26 02:10:00      4
etc.

Можно ли сформулировать один SQL-запрос для MySQL, который будет возвращать серию средних значений за каждый час?

В этом случае должно возвращаться:

5.42
8.87
etc.

Ответы [ 2 ]

15 голосов
/ 26 января 2009

Неясно, хотите ли вы, чтобы среднее значение было агрегировано по дням или нет.

Если вы хотите получить другое среднее значение для полуночи 26 числа против полуночи 27 числа, то измените запрос Mabwi следующим образом:

SELECT AVG( value ) , thetime
FROM hourly_averages
GROUP BY DATE( thetime ), HOUR( thetime )

Обратите внимание на дополнительные DATE() в предложении GROUP BY. Без этого запрос будет усреднять вместе все данные от 00:00 до 00:59 без учета даты, когда это произошло.

3 голосов
/ 26 января 2009

Это должно работать:

SELECT AVG( value ) , thetime
FROM hourly_averages
GROUP BY HOUR( thetime )

Вот результат

AVG(value)          thetime
5.4166666865349     2009-01-26 00:00:00
8.8666666348775     2009-01-26 01:00:00
3.5                 2009-01-26 02:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...