Introduzido em: v1.1.0
Conta o número de linhas ou de valores não NULL.
O ClickHouse oferece suporte às seguintes sintaxes para count:
count(expr) ou COUNT(DISTINCT expr).
count() ou COUNT(*). A sintaxe count() é específica do ClickHouse.
Detalhes
O ClickHouse oferece suporte à sintaxe COUNT(DISTINCT ...).
O comportamento dessa construção depende da configuração count_distinct_implementation.
Ela define qual das funções uniq* é usada para realizar a operação.
O padrão é a função uniqExact.
A consulta SELECT count() FROM table é otimizada por padrão com base nos metadados do MergeTree.
Se você precisar usar segurança em nível de linha, desative essa otimização usando a configuração optimize_trivial_count_query.
No entanto, a consulta SELECT count(nullable_column) FROM table pode ser otimizada ativando a configuração optimize_functions_to_subcolumns.
Com optimize_functions_to_subcolumns = 1, a função lê apenas a subcoluna null, em vez de ler e processar todos os dados da coluna.
A consulta SELECT count(n) FROM table é transformada em SELECT sum(NOT n.null) FROM table.
Melhorando o desempenho de COUNT(DISTINCT expr)Se a sua consulta COUNT(DISTINCT expr) estiver lenta, considere adicionar uma cláusula GROUP BY, pois isso melhora a paralelização.
Você também pode usar uma projection para criar um índice na coluna de destino usada com COUNT(DISTINCT target_col).
Sintaxe
Argumentos
expr — Opcional. Uma expressão. A função conta quantas vezes essa expressão retornou um valor não nulo. Expressão
Valor retornado
Retorna a contagem de linhas se a função for chamada sem parâmetros; caso contrário, retorna a contagem de quantas vezes a expressão fornecida retornou um valor não nulo. UInt64
Exemplos
Contagem básica de linhas
┌─count()─┐
│ 5 │
└─────────┘
Exemplo de COUNT(DISTINCT)
-- Este exemplo mostra que `count(DISTINCT num)` é executado pela função `uniqExact` de acordo com o valor da configuração `count_distinct_implementation`.
SELECT name, value FROM system.settings WHERE name = 'count_distinct_implementation';
SELECT count(DISTINCT num) FROM t
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─uniqExact(num)─┐
│ 3 │
└────────────────┘
Última modificação em 10 de junho de 2026