avg_state
avg_state returns an intermediate average state. It retains a total and count rather than only the average, so a later merge can combine batches with the correct weights.
Create typed state storage
sql
CREATE TABLE readings(batch UInt8, value Int64);
INSERT INTO readings VALUES (1, 10), (1, 20), (2, 90);
CREATE TABLE partials(batch UInt8, state AggregateFunction(avg, Int64));Store one state per batch
sql
INSERT INTO partials
SELECT batch, avg_state(value)
FROM readings
GROUP BY batch;Read a state's value
finalize_aggregation reads a single state's result:
sql
SELECT batch, finalize_aggregation(state) AS average_value
FROM partials
ORDER BY batch
FORMAT csv;text
1,15.0
2,90.0Use avg_merge to combine several states. State function names and argument types must match the storage declaration exactly; CoordinatorDB states are not compatible with ClickHouse state bytes.