# Функции агрегирования

Семейство функций, известных как функции агрегирования, включает функции, которые обрабатывают несколько значений и возвращают один результат на группу. В данных функциях группирование определяется по измерению диаграммы или оператором group by в скрипте.

Функции агрегирования: Sum(), Count(), Min(), Max() и т .д.

Большинство функций агрегирования можно использовать как в скрипте загрузки данных, так и в выражениях диаграмм, но синтаксис имеет различия.

## Использование функций агрегирования в скрипте загрузки данных

Функции агрегирования могут использоваться только внутри операторов LOAD и SELECT.

## Использование функций агрегирования в выражениях диаграмм

Параметр функции агрегирования не должен содержать функции агрегирования, кроме внутреннего агрегирования, содержащего квалификатор TOTAL. Для получения более расширенных вложенных агрегирований необходимо использовать расширенную функцию Aggr вместе с заданным измерением.

Функция агрегирования агрегирует набор возможных записей, определенных выборкой. Однако альтернативное множество записей может быть определено выражением множества в анализе множеств.

[Анализ множества и выражения множества](https://help.qlik.com/ru-RU/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)

## Как вычисляются агрегирования

Агрегирование циклически проходит по записям определенной таблицы, агрегируя их. Например, Count(&lt;Field&gt;) будет считать количество записей в таблице, в которой находится &lt;Field&gt;. Если необходимо агрегировать только уникальные значения поля, необходимо использовать предложение distinct, например Count(distinct &lt;Field&gt;).

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

## Агрегирование ключевых полей

Способ вычисления агрегирований определяет, что нельзя агрегировать ключевые поля, потому что не ясно, какая таблица должна использоваться для агрегирования. Например, если поле &lt;Key&gt; связывает две таблицы, не ясно, вернет ли Count(&lt;Key&gt;) количество записей в первой или второй таблице.

Однако при использовании оператора distinct агрегирование определено и может быть вычислено для ключевого поля, связанного с двумя таблицами.

Если ключевое поле используется в функции агрегирования без оператора distinct, QlikView вернет число, которое может не иметь смысла. Решение — использовать оператор distinct или копию ключа — то есть копию, которая находится только в одной таблице.

Например, в следующих таблицах ProductID представляет собой ключ между таблицами.

Ключ ProductId между таблицами Products и Details

Ключ ProductId между таблицами Products и Details

Ключ ProductIdProductId между таблицами ProductsProducts и DetailsDetails ![Две таблицы, связанные ключевым полем 'ProductID'](https://help.qlik.com/ru-RU/qlikview/September2025/Subsystems/Client/Content/Resources/Images/AggTables.png)

Count(ProductID) может подсчитываться либо в таблице Products (которая содержит только по одной записи для каждого продукта — здесь ProductID является первичным ключом), либо в таблице Details (которая чаще всего содержит по несколько записей для каждого продукта). Если требуется подсчитать количество разных продуктов, следует использовать Count(distinct ProductID). Если требуется подсчитывать количество строк в конкретной таблице, не следует использовать ключ.

### Агрегирования ключевых полей, содержащихся в трех или более таблицах

Префикс distinct работает только с ключевыми полями, которые связывают две таблицы. При группировке агрегирования по ключевому полю, существующему в трех или более таблицах, любая операция, требующая информацию о частоте для поля, будет возвращать NULL. Если ключевое поле связывает три таблицы или больше, вместо него должна использоваться неключевая копия поля.