如何在sql,MySQL中查询过去7天的avg?

时间:2015-11-02 09:07:49

标签: mysql sql

说我有一个数据集:

|dateid     | value |

|20150101   |   1   |
|20150102   |   2   |
|20150103   |   3.1 |
|20150104   |   4.3 |
|20150105   |   3.1 |
|20150106   |   1   |
|20150107   |   1   |
|20150108   |   1   |
|....       |      |
|....       |   ...   |
|20151001   |   10.3|

我想根据日期范围查询过去7天的平均值。

对于20150707和20150730的dateid,当我选择20150707的行时,我还需要20150701和20150707之间的平均值((1 + 2 + 3.1 + 4.3 + 1 + 1 + 1 + 1)/ 7)以及20150707(1)的值如:

select dateid, value , avg(value) as avg_past_7 from mytable where dateid between 20150707 and 20150730GROUP BY every past_7days.

当记录小于7行时,平均值保持为空。 这意味着如果我在表中只有20150707-20150730的记录,那么20150707/8/9/10/11/12的past_7_day平均值仍为空。

3 个答案:

答案 0 :(得分:0)

相关的子选择:

2015-12-01

答案 1 :(得分:0)

使用 Date_SUB <7天的时间间隔

答案 2 :(得分:0)

我通过以下方式解决问题:

select t1.dateid, t1.value, if(count(1)>=7,avg(t2.value),null) 
from mytable t1 , mytable t2
where t2.dateid between DATE_SUB(date(t1.dateid),INTERVAL 6 day)+0 and t1.dateid and 
      t1.dateid between 20150105 and 20150201
group by t1.dateid ,t1.value
order by dateid;