Skip to main content
Skip to main content

AggregateFunction Type

Description

All Aggregate functions in ClickHouse have an implementation-specific intermediate state that can be serialized to an AggregateFunction data type and stored in a table. This is usually done by means of a materialized view.

There are two aggregate function combinators commonly used with the AggregateFunction type:

  • The -State aggregate function combinator, which when appended to an aggregate function name, produces AggregateFunction intermediate states.
  • The -Merge aggregate function combinator, which is used to get the final result of an aggregation from the intermediate states.

Syntax

Parameters

  • aggregate_function_name - The name of an aggregate function. If the function is parametric, then its parameters should be specified too.
  • types_of_arguments - The types of the aggregate function arguments.

for example:

Usage

Data Insertion

To insert data into a table with columns of type AggregateFunction, you can use INSERT SELECT with aggregate functions and the -State aggregate function combinator.

For example, to insert into columns of type AggregateFunction(uniq, UInt64) and AggregateFunction(quantiles(0.5, 0.9), UInt64) you would use the following aggregate functions with combinators.

In contrast to functions uniq and quantiles, uniqState and quantilesState (with -State combinator appended) return the state, rather than the final value. In other words, they return a value of AggregateFunction type.

In the results of the SELECT query, values of type AggregateFunction have implementation-specific binary representations for all of the ClickHouse output formats.

If you dump data into, for example, the TabSeparated format with a SELECT query, then this dump can be loaded back using the INSERT query.

Data Selection

When selecting data from AggregatingMergeTree table, use the GROUP BY clause and the same aggregate functions as for when you inserted the data, but use the -Merge combinator.

An aggregate function with the -Merge combinator appended to it takes a set of states, combines them, and returns the result of the complete data aggregation.

For example, the following two queries return the same result:

Usage Example

See AggregatingMergeTree engine description.