> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по типу данных SimpleAggregateFunction

# Тип данных SimpleAggregateFunction

<div id="description">
  ## Описание
</div>

Тип данных `SimpleAggregateFunction` хранит промежуточное состояние
агрегатной функции, но не её полное состояние, в отличие от типа
[`AggregateFunction`](/ru/reference/data-types/aggregatefunction).

Эту оптимизацию можно применять к функциям, для которых выполняется
следующее свойство:

> результат применения функции `f` к набору строк `S1 UNION ALL S2` можно
> получить, если применить `f` к частям этого набора строк по отдельности, а затем
> ещё раз применить `f` к полученным результатам: `f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2))`.

Это свойство гарантирует, что частичных результатов агрегации достаточно для вычисления
общего результата, поэтому не требуется хранить и обрабатывать дополнительные данные. Например,
для функций `min` или `max` не нужны дополнительные шаги, чтобы получить
окончательный результат из промежуточных, тогда как для функции `avg`
нужно отслеживать сумму и количество, которые затем делятся для получения
среднего значения на финальном этапе `Merge`, объединяющем промежуточные состояния.

Значения агрегатной функции обычно получают, вызывая агрегатную функцию
с комбинатором [`-SimpleState`](/ru/reference/functions/aggregate-functions/combinators#-simplestate), добавленным к имени функции.

<div id="syntax">
  ## Синтаксис
</div>

```sql theme={null}
SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)
```

**Параметры**

* `aggregate_function_name` - Имя агрегатной функции.
* `Type` - Типы аргументов агрегатной функции.

<div id="supported-functions">
  ## Поддерживаемые функции
</div>

Поддерживаются следующие агрегатные функции:

* [`any`](/ru/reference/functions/aggregate-functions/any)
* [`any_respect_nulls`](/ru/reference/functions/aggregate-functions/any)
* [`anyLast`](/ru/reference/functions/aggregate-functions/anyLast)
* [`anyLast_respect_nulls`](/ru/reference/functions/aggregate-functions/anyLast)
* [`min`](/ru/reference/functions/aggregate-functions/min)
* [`max`](/ru/reference/functions/aggregate-functions/max)
* [`sum`](/ru/reference/functions/aggregate-functions/sum)
* [`sumWithOverflow`](/ru/reference/functions/aggregate-functions/sumWithOverflow)
* [`groupBitAnd`](/ru/reference/functions/aggregate-functions/groupBitAnd)
* [`groupBitOr`](/ru/reference/functions/aggregate-functions/groupBitOr)
* [`groupBitXor`](/ru/reference/functions/aggregate-functions/groupBitXor)
* [`groupArrayArray`](/ru/reference/functions/aggregate-functions/groupArrayArray)
* [`groupUniqArrayArray`](/ru/reference/functions/aggregate-functions/groupUniqArray)
* [`groupUniqArrayArrayMap`](/ru/reference/functions/aggregate-functions/combinators#-map)
* [`sumMap` (`sumMappedArrays`)](/ru/reference/functions/aggregate-functions/sumMap)
* [`minMap` (`minMappedArrays`)](/ru/reference/functions/aggregate-functions/minMap)
* [`maxMap` (`maxMappedArrays`)](/ru/reference/functions/aggregate-functions/maxMap)

<Note>
  Значения `SimpleAggregateFunction(func, Type)` имеют тот же `Type`,
  поэтому, в отличие от типа `AggregateFunction`, применять
  комбинаторы `-Merge`/`-State` не требуется.

  Тип `SimpleAggregateFunction` обеспечивает более высокую производительность, чем `AggregateFunction`,
  для тех же агрегатных функций.
</Note>

<div id="example">
  ## Пример
</div>

```sql theme={null}
CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;
```

<div id="related-content">
  ## Материалы по теме
</div>

* Блог: [Использование комбинаторов агрегатных функций в ClickHouse](https://clickhouse.com/blog/aggregate-functions-combinators-in-clickhouse-for-arrays-maps-and-states)    - Блог: [Использование комбинаторов агрегатных функций в ClickHouse](https://clickhouse.com/blog/aggregate-functions-combinators-in-clickhouse-for-arrays-maps-and-states)
* Тип [AggregateFunction](/ru/reference/data-types/aggregatefunction).
