2013-09-19 5 views
1

Мой стол:Средние значения всех недель

id - value - time  
0 - 15 - 21.09.13  
1 - 22 - 22.09.13  
2 - 11 - 23.09.13  
3 - 17 - 24.09.13 
... 

Я хочу, чтобы получить средние значения с прошлой недели. Но не только для одного. Мне нужны средние значения всех недель. я пытался сделать что-то вроде этого:

SELECT AVG(value) 
FROM table 
WHERE time BETWEEN date_sub(now(), INTERVAL 8 DAY) AND NOW(); 

Но это возвращает только один ряд. Она должна возвращать что-то вроде этого:

AVG(value) 
25 //first week  
23.6 //second  
21 
... 

ответ

1

Вы должны сгруппировать данные за каждую неделю. Вы можете использовать yearweek()

SELECT yearweek(`time`), AVG(value) 
FROM table 
WHERE time BETWEEN date_sub(now(), INTERVAL 8 DAY) AND NOW() 
group by yearweek(`time`) 
+0

Похоже на то, что ..... – Tony

+0

Что вы используете? MySQL, SQL Server, Oracle, ...? –

+0

Я использую MySQL – Tony

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