Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

count

count

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.

Sintaxe

count([expr])

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

CREATE TABLE t (num UInt8) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (2), (3);

SELECT count() FROM t
┌─count()─┐
│       5 │
└─────────┘

Exemplo de COUNT(DISTINCT)

-- This example shows that `count(DISTINCT num)` is performed by the `uniqExact` function according to the `count_distinct_implementation` setting value.
SELECT name, value FROM system.settings WHERE name = 'count_distinct_implementation';
SELECT count(DISTINCT num) FROM t
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─countDistinct(num)─┐
│                  3 │
└────────────────────┘
Navigation