便利な関数 width_bucket()<をお勧めします。 / code>
各時間セグメント(「ビン」)の平均を取得するには:
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
の使用 date
の代わりに 列名として、予約語
を避けます。 識別子として。width_bucket()
以降 現在、倍精度
に対してのみ実装されています および数値
、 the_date
からエポック値を抽出します 。詳細はこちら:
PostgreSQLでの(x、y)座標点群の集約