Skip to main content
Since 1.3.0 Combine multiple intermediate statistical aggregate (StatsSummary1D) objects into a single StatsSummary1D object. It is optimized for use in a window function context for computing tumbling window statistical aggregates.
This is especially useful for computing tumbling window aggregates from a continuous aggregate. It can be orders of magnitude faster because it uses inverse transition and combine functions, with the possibility that bigger floating point errors can occur in unusual scenarios.For re-aggregation in a non-window function context, such as combining hourly buckets into daily buckets, see rollup().
rolling(
    ss StatsSummary1D
) RETURNS StatsSummary1D

Arguments

NameTypeDefaultRequiredDescription
summaryStatsSummary1D-The statistical aggregate produced by a stats_agg call

Returns

ColumnTypeDescription
rollingStatsSummary1DA new statistical aggregate produced by combining the input statistical aggregates

Samples

Combine hourly continuous aggregates to create a tumbling window daily aggregate. Calculate the average and standard deviation using the appropriate accessors:
CREATE MATERIALIZED VIEW foo_hourly
WITH (timescaledb.continuous)
AS SELECT
  time_bucket('1h'::interval, ts) AS bucket,
  stats_agg(value) as stats
FROM foo
GROUP BY 1;

SELECT
  bucket,
  average(rolling(stats) OVER (ORDER BY bucket RANGE '1 day' PRECEDING)),
  stddev(rolling(stats) OVER (ORDER BY bucket RANGE '1 day' PRECEDING)),
FROM foo_hourly;