Как получить среднее значение за неделю от месяца в MySQL? - PullRequest
0 голосов
/ 21 марта 2012

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

select avg(value) from table group by month 

дает среднемесячное значение.

select avg(value) from table group by day

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

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Вы не можете «получать недели из месяца», так как одно не является подмножеством другого.
Количество дней (и, следовательно, недель) в 1 месяце варьируется от месяца к месяцу и только в не високосные годы - и только в феврале - составляет ровно 4 недели в месяце.

Вы должны использовать исходное поле даты и использовать функцию даты, чтобы ограничить / сгруппировать данные по неделям.
получить неделю в MySQL с
WEEK(timestamp)
или
YEARWEEK(timestamp)
или
WEEKOFYEAR(NOW())
или
DATE_FORMAT($yourDate, \'%X %V\') as week

0 голосов
/ 21 марта 2012

Возможно, есть лучший способ, но моя первая мысль - написать запрос, который вычисляет неделю года для каждого дня и группирует их.http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_weekofyear

Что-то вроде:

SELECT avg(value) FROM table GROUP BY WEEKOFYEAR(CONCAT(year, '-', month, '-', day))
...