मेरा सुझाव है कि आसान कार्य width_bucket()
:
प्रत्येक समय खंड ("बिन") का औसत प्राप्त करने के लिए:
SELECT width_bucket(extract(epoch FROM t.the_date)
, x.min_epoch, x.max_epoch, x.bins) AS bin
, avg(value) AS bin_avg
FROM tbl t
, (SELECT extract(epoch FROM min(the_date)) AS min_epoch
, extract(epoch FROM max(the_date)) AS max_epoch
, 10 AS bins
FROM tbl t
) x
GROUP BY 1;
(चरण-दर-चरण) बढ़ते समय अंतराल पर "रनिंग एवरेज" प्राप्त करने के लिए:
SELECT bin, round(sum(bin_sum) OVER w /sum(bin_ct) OVER w, 2) AS running_avg
FROM (
SELECT width_bucket(extract(epoch FROM t.the_date)
, x.min_epoch, x.max_epoch, x.bins) AS bin
, sum(value) AS bin_sum
, count(*) AS bin_ct
FROM tbl t
, (SELECT extract(epoch FROM min(the_date)) AS min_epoch
, extract(epoch FROM max(the_date)) AS max_epoch
, 10 AS bins
FROM tbl t
) x
GROUP BY 1
) sub
WINDOW w AS (ORDER BY bin)
ORDER BY 1;
the_date
Using का उपयोग करना date
. के बजाय कॉलम नाम के रूप में, आरक्षित शब्दों
से परहेज करते हुए पहचानकर्ता के रूप में।
चूंकि width_bucket()
वर्तमान में केवल double precision
के लिए लागू किया गया है और numeric
, मैं the_date
. से युग मान निकालता हूं . विवरण यहाँ:
पोस्टग्रेएसक्यूएल में एग्रीगेटिंग (एक्स, वाई) समन्वय बिंदु बादल