Перейти к основному содержанию
Агрегатные функции работают обычным образом, как и ожидают специалисты по базам данных. ClickHouse также поддерживает:

Обработка NULL

При агрегации все аргументы со значением NULL пропускаются. Если у агрегации несколько аргументов, игнорируется любая строка, в которой один или несколько из них имеют значение NULL. Из этого правила есть исключение: функции first_value, last_value и их псевдонимы (any и anyLast соответственно), если за ними следует модификатор RESPECT NULLS. Например, FIRST_VALUE(b) RESPECT NULLS. Примеры: Рассмотрим следующую таблицу:
Допустим, вам нужно суммировать значения в столбце y:
Теперь вы можете использовать функцию groupArray, чтобы создать массив из столбца y:
groupArray не включает NULL в результирующий массив. Вы можете использовать COALESCE, чтобы заменить NULL на значение, подходящее для вашего сценария использования. Например, avg(COALESCE(column, 0)) будет использовать значение столбца при агрегации или ноль, если это NULL:
Также можно использовать Tuple, чтобы обойти поведение, связанное с пропуском NULL. Tuple, содержащий только значение NULL, сам не является NULL, поэтому агрегатные функции не будут пропускать эту строку из-за этого значения NULL.
Обратите внимание, что агрегации пропускаются, если столбцы используются в качестве аргументов агрегатной функции. Например, count без параметров (count()) или с константными параметрами (count(1)) будет подсчитывать все строки в блоке (независимо от значения столбца GROUP BY, так как он не является аргументом), тогда как count(column) вернет только количество строк, в которых column не равно NULL.
И вот пример first_value с RESPECT NULLS, где видно, что входные значения NULL учитываются и возвращается первое прочитанное значение — независимо от того, равно оно NULL или нет:
Последнее изменение 2 июля 2026 г.