カスタムのウィンドウ関数フレーム これを驚くほどシンプルにします :
SELECT ts
,avg(val) OVER (ORDER BY ts
ROWS BETWEEN CURRENT ROW AND 7 FOLLOWING) AS avg_8h
FROM tbl;
各平均のフレームは、現在の行に次の7を加えたものです。これは、1時間ごとに1つの行があることを前提としています。あなたのサンプルデータはそれを暗示しているようですが、あなたは指定しませんでした。
現状では、avg_8h
決勝戦(ts
による) )最後の行の値がそれ自体の平均と等しくなるまで、セットの7行がより少ない行で計算されます。特別な場合の対処方法を指定していません。