一个 ,使这个 非常简单 :
SELECT ts
,avg(val) OVER (ORDER BY ts
ROWS BETWEEN CURRENT ROW AND 7 FOLLOWING) AS avg_8h
FROM tbl;
每个平均值的框架是当前行加上随后的7。这假设您每小时每小时只有一排。您的样本数据似乎暗示了这一点,但您未指定。
对于该集合avg_8h
的最后ts
7个行(根据)用更少的行进行计算的方式是,直到最后一行的值等于其自己的平均值为止。您没有指定如何处理特殊情况。