count
count
Введено в: v1.1
Подсчитывает количество строк или ненулевых (not NULL) значений.
ClickHouse поддерживает следующие варианты синтаксиса для count:
count(expr)илиCOUNT(DISTINCT expr).count()илиCOUNT(*). Синтаксисcount()является специфичным для ClickHouse.
Подробности
ClickHouse поддерживает синтаксис COUNT(DISTINCT ...).
Поведение этой конструкции зависит от настройки count_distinct_implementation.
Она определяет, какая из функций семейства uniq* используется для выполнения операции.
По умолчанию используется функция uniqExact.
Запрос SELECT count() FROM table по умолчанию оптимизируется с использованием метаданных движка MergeTree.
Если вам нужно использовать построчную (row-level) модель безопасности, отключите эту оптимизацию с помощью настройки optimize_trivial_count_query.
Однако запрос SELECT count(nullable_column) FROM table может быть оптимизирован за счёт включения настройки optimize_functions_to_subcolumns.
При optimize_functions_to_subcolumns = 1 функция читает только подстолбец null вместо чтения и обработки всех данных столбца.
Запрос SELECT count(n) FROM table преобразуется в SELECT sum(NOT n.null) FROM table.
Если ваш запрос COUNT(DISTINCT expr) выполняется медленно, рассмотрите возможность добавления оператора GROUP BY, так как это улучшает параллелизацию.
Вы также можете использовать проекцию для создания индекса на целевом столбце, который используется с COUNT(DISTINCT target_col).
Синтаксис
Аргументы
expr— необязательный параметр. Выражение. Функция считает, сколько раз это выражение вернуло значение, отличное от NULL.Expression
Возвращаемое значение
Возвращает количество строк, если функция вызывается без параметров, в противном случае — количество раз, когда переданное выражение вернуло значение, отличное от NULL. UInt64
Примеры
Базовый подсчёт строк
Пример использования COUNT(DISTINCT)