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
...
4

1 回答 1

1

您需要对每周的数据进行分组。你可以使用yearweek()

SELECT yearweek(`time`), AVG(value) 
FROM table 
WHERE time BETWEEN date_sub(now(), INTERVAL 8 DAY) AND NOW()
group by yearweek(`time`)
于 2013-09-19T08:16:20.630 回答