##前提・実現したいこと
以前同じ内容を質問し、ウィンドウ関数を使用した方法の回答をいただきました。
with t as ( SELECT 日時, 値 , lag(値) OVER (ORDER BY 日時) AS 1つ前の差 , 値 - lag(値) OVER (ORDER BY 日時) AS 差 FROM (values ('2019/10/10 11:22:00'::timestamp, 4980) ,('2019/10/10 11:23:00'::timestamp, 5000) ,('2019/10/10 11:24:00'::timestamp, 5200) ,('2019/10/10 11:25:00'::timestamp, 4980) ,('2019/10/10 11:26:00'::timestamp, 5000) ,('2019/10/10 11:27:00'::timestamp, 5200) ,('2019/10/10 11:28:00'::timestamp, 5100) ) AS t1(日時, 値) ) select * , case when lag(値, 5) OVER (ORDER BY 日時) is not null then (select sum(差)/5 from t where 日時 between (t1.日時 - interval '4 minutes') and t1.日時) end AS 5回分平均 from t as t1
ウィンドウ関数を使わずに上の内容を実現することは可能でしょうか。
PostgreSQLのバージョンが7シリーズで、ウィンドウ関数が使用できない環境です。
よい方法はないでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/15 13:09 編集