我在计算5天移动平均值。一切都很好,除了日期有间隔。当存在间隙时,缺失日期(-s)的值应设置为零,以显示正确的移动平均值。
这是我的表(订单总数),您可以看到2013年1月7日没有日期,这就是问题的原因:

orders_id    value    date
1            199      1/1/13 0:00
2            199      1/2/13 0:00
3            199      1/3/13 0:00
4            199      1/4/13 0:00
5            249      1/5/13 0:00
6            199      1/6/13 0:00
7            199      1/8/13 0:00
8            199      1/9/13 0:00
9            199      1/10/13 0:00
10           199      1/11/13 0:00
11           199      1/12/13 0:00
12           199      1/13/13 0:00

如果缺失日期1/7/13的值设置为零,则正确的5天移动平均值(正在查找)为:
199
199
199
199
209
209
169.2
169.2
169.2
159.2
159.2
199
199

这是我正在使用的代码,当日期之间有间隔时,它不会显示正确的移动平均数:
    SELECT ot1.value, ot1.date,
    (SELECT SUM(ot2.value) / COUNT(ot2.value)
    FROM orders_total AS ot2 WHERE DATEDIFF(ot1.date, ot2.date) BETWEEN 0 AND 4) AS '5dayMovingAvg'
    FROM orders_total AS ot1 ORDER BY ot1.date";

最佳答案

如果你知道它将永远是5天,为什么除以计数(ot2.value)?除非你试图处理边的情况,在这种情况下,处理边的情况不同于正常情况。

10-08 02:04