Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

count

count

Introducido en: v1.1.0

Cuenta el número de filas o de valores distintos de NULL.

ClickHouse admite las siguientes sintaxis para count:

  • count(expr) o COUNT(DISTINCT expr).
  • count() o COUNT(*). La sintaxis count() es específica de ClickHouse.

Detalles

ClickHouse admite la sintaxis COUNT(DISTINCT ...). El comportamiento de esta construcción depende de la configuración count_distinct_implementation. Esta define cuál de las funciones uniq* se utiliza para realizar la operación. El valor predeterminado es la función uniqExact.

La consulta SELECT count() FROM table se optimiza de forma predeterminada usando metadatos de MergeTree. Si necesita usar seguridad a nivel de fila, desactive esta optimización mediante la configuración optimize_trivial_count_query.

Sin embargo, la consulta SELECT count(nullable_column) FROM table puede optimizarse habilitando la configuración optimize_functions_to_subcolumns. Con optimize_functions_to_subcolumns = 1, la función lee solo la subcolumna null en lugar de leer y procesar los datos completos de la columna. La consulta SELECT count(n) FROM table se transforma en SELECT sum(NOT n.null) FROM table.

Sintaxis

count([expr])

Argumentos

  • expr — Opcional. Una expresión. La función cuenta cuántas veces esta expresión devolvió un valor distinto de NULL. Expresión

Valor devuelto

Devuelve el recuento de filas si la función se llama sin parámetros; en caso contrario, devuelve el número de veces que la expresión proporcionada devolvió un valor distinto de NULL. UInt64

Ejemplos

Recuento básico de filas

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

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

Ejemplo 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