我不确定瓷砖是正确的还是具体的......
我有一个看起来像这样的表:
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
答案 0 :(得分:0)
如果您需要每日平均值,则必须使用:
SELECT AVG(value)
FROM readings r
GROUP BY(date);
我不确定为什么你在分析描述中做到了平均值。