> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# count

<div id="count">
  ## count
</div>

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`](/es/reference/settings/session-settings#count_distinct_implementation).
Esta define cuál de las funciones [uniq\*](/es/reference/functions/aggregate-functions/uniq) se utiliza para realizar la operación.
El valor predeterminado es la función [uniqExact](/es/reference/functions/aggregate-functions/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`](/es/reference/settings/session-settings#optimize_trivial_count_query).

Sin embargo, la consulta `SELECT count(nullable_column) FROM table` puede optimizarse habilitando la configuración [`optimize_functions_to_subcolumns`](/es/reference/settings/session-settings#optimize_functions_to_subcolumns).
Con `optimize_functions_to_subcolumns = 1`, la función lee solo la subcolumna [`null`](/es/reference/data-types/nullable#finding-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`.

<Tip>
  **Mejorar el rendimiento de COUNT(DISTINCT expr)**

  Si su consulta `COUNT(DISTINCT expr)` es lenta, considere agregar una cláusula [`GROUP BY`](/es/reference/statements/select/group-by), ya que esto mejora la paralelización.
  También puede usar una [proyección](/es/reference/statements/alter/projection) para crear un índice sobre la columna de destino usada con `COUNT(DISTINCT target_col)`.
</Tip>

**Sintaxis**

```sql theme={null}
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`](/es/reference/data-types/special-data-types/expression)

**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`](/es/reference/data-types/int-uint)

**Ejemplos**

**Recuento básico de filas**

```sql title=Query theme={null}
SELECT count() FROM t
```

```response title=Response theme={null}
┌─count()─┐
│       5 │
└─────────┘
```

**Ejemplo de COUNT(DISTINCT)**

```sql title=Query theme={null}
-- Este ejemplo muestra que `count(DISTINCT num)` es ejecutado por la función `uniqExact` según el valor del parámetro `count_distinct_implementation`.
SELECT name, value FROM system.settings WHERE name = 'count_distinct_implementation';
SELECT count(DISTINCT num) FROM t
```

```response title=Response theme={null}
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─uniqExact(num)─┐
│              3 │
└────────────────┘
```
