查找每天的平均值,如果当天没有记录,请采取最新信息

时间:2014-03-17 21:32:25

标签: mysql

我不确定瓷砖是正确的还是具体的......

我有一个看起来像这样的表:

2013-01-01
a: 100

2013-01-02
b: 50

2013-01-03
c: 75
b: 200

“a,b,c”用户ID。

我需要一个将返回的查询:

2013-01-01
100 / 1 = 100

2013-01-02
(100 + 50) / 2 = 75

2013-01-03
(100 + 200 + 75) / 3 = 125

[[2013-01-01,100],[2013-01-02,75],[2013-01-03,125]]

似乎在一个证明日期我可以这样做:

SELECT AVG(column1) FROM table a 
  JOIN (
   SELECT MAX(date) AS max_date, user_id FROM table 
     WHERE date < "2013-09-01" GROUP BY user_id) b 
   ON b.user_id = a.user_id AND a.date = b.max_date;

但是,我有一个可以按日,周,月或年分开的间隔:['2013-01-01','2013-01-02',...'2014-01-01'] (连续)

有没有更快的方法来做到这一点,而不是在100天的间隔内运行100个查询?

sqlfiddle:http://sqlfiddle.com/#!2/d74fa/2

期望的结果: 将返回的单个查询

2013-01-01, 100
2013-01-02, 75
2013-01-03, 125

1 个答案:

答案 0 :(得分:0)

如果您需要每日平均值,则必须使用:

SELECT AVG(value)
FROM readings r
GROUP BY(date);

我不确定为什么你在分析描述中做到了平均值。