mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-22 16:30:49 +00:00
2d2bc052e1
* Typo fix. * Links fix. * Fixed links in docs. * More fixes. * docs/en: cleaning some files * docs/en: cleaning data_types * docs/en: cleaning database_engines * docs/en: cleaning development * docs/en: cleaning getting_started * docs/en: cleaning interfaces * docs/en: cleaning operations * docs/en: cleaning query_lamguage * docs/en: cleaning en * docs/ru: cleaning data_types * docs/ru: cleaning index * docs/ru: cleaning database_engines * docs/ru: cleaning development * docs/ru: cleaning general * docs/ru: cleaning getting_started * docs/ru: cleaning interfaces * docs/ru: cleaning operations * docs/ru: cleaning query_language * docs: cleaning interfaces/http * Update docs/en/data_types/array.md decorated ``` Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/nyc_taxi.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/ontime.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/interfaces/formats.md fixed error Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/custom_partitioning_key.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/dicts/external_dicts_dict_sources.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/date_time_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/jdbc.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * docs: fixed error * docs: fixed error
65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
# AggregateFunction(name, types_of_arguments...) {#data_type-aggregatefunction}
|
|
|
|
The intermediate state of an aggregate function. To get it, use aggregate functions with the `-State` suffix. To get aggregated data in the future, you must use the same aggregate functions with the `-Merge`suffix.
|
|
|
|
`AggregateFunction` — parametric data type.
|
|
|
|
**Parameters**
|
|
|
|
- Name of the aggregate function.
|
|
|
|
If the function is parametric specify its parameters too.
|
|
|
|
- Types of the aggregate function arguments.
|
|
|
|
**Example**
|
|
|
|
```sql
|
|
CREATE TABLE t
|
|
(
|
|
column1 AggregateFunction(uniq, UInt64),
|
|
column2 AggregateFunction(anyIf, String, UInt8),
|
|
column3 AggregateFunction(quantiles(0.5, 0.9), UInt64)
|
|
) ENGINE = ...
|
|
```
|
|
|
|
[uniq](../../query_language/agg_functions/reference.md#agg_function-uniq), anyIf ([any](../../query_language/agg_functions/reference.md#agg_function-any)+[If](../../query_language/agg_functions/combinators.md#agg-functions-combinator-if)) and [quantiles](../../query_language/agg_functions/reference.md) are the aggregate functions supported in ClickHouse.
|
|
|
|
## Usage
|
|
|
|
### Data Insertion
|
|
|
|
To insert data, use `INSERT SELECT` with aggregate `-State`- functions.
|
|
|
|
**Function examples**
|
|
|
|
```sql
|
|
uniqState(UserID)
|
|
quantilesState(0.5, 0.9)(SendTiming)
|
|
```
|
|
|
|
In contrast to the corresponding functions `uniq` and `quantiles`, `-State`- functions return the state, instead the final value. In other words, they return a value of `AggregateFunction` type.
|
|
|
|
In the results of `SELECT` query the values of `AggregateFunction` type have implementation-specific binary representation for all of the ClickHouse output formats. If dump data into, for example, `TabSeparated` format with `SELECT` query then this dump can be loaded back using `INSERT` query.
|
|
|
|
### Data Selection
|
|
|
|
When selecting data from `AggregatingMergeTree` table, use `GROUP BY` clause and the same aggregate functions as when inserting data, but using `-Merge`suffix.
|
|
|
|
An aggregate function with `-Merge` suffix takes a set of states, combines them, and returns the result of complete data aggregation.
|
|
|
|
For example, the following two queries return the same result:
|
|
|
|
```sql
|
|
SELECT uniq(UserID) FROM table
|
|
|
|
SELECT uniqMerge(state) FROM (SELECT uniqState(UserID) AS state FROM table GROUP BY RegionID)
|
|
```
|
|
|
|
## Usage Example
|
|
|
|
See [AggregatingMergeTree](../../operations/table_engines/aggregatingmergetree.md) engine description.
|
|
|
|
|
|
[Original article](https://clickhouse.yandex/docs/en/data_types/nested_data_structures/aggregatefunction/) <!--hide-->
|