एक एक कस्टम के साथ विंडो फ़ंक्शन फ्रेम इसे आश्चर्यजनक रूप से सरल बनाता है :
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 पंक्तियों की गणना कम पंक्तियों के साथ की जाती है, जब तक कि अंतिम पंक्ति का मान अपने स्वयं के औसत के बराबर न हो जाए। आपने निर्दिष्ट नहीं किया कि विशेष मामले से कैसे निपटा जाए।