Agregación · recuento de filas

COUNT

COUNT devuelve cuántas filas o valores cumplen una regla; elegir el argumento correcto cambia el significado del resultado.

Lectura: 5–7 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Las tres preguntas de COUNT

COUNT es una función de agregación: recibe un conjunto de filas y devuelve un único número por conjunto o por grupo.

  • COUNT(*): ¿cuántas filas hay?
  • COUNT(columna): ¿cuántas filas tienen un valor no nulo en esa columna?
  • COUNT(DISTINCT columna): ¿cuántos valores no nulos diferentes hay?

No son formas intercambiables. La elección debe expresar la entidad que quieres contar.

Sintaxis

Formas principales
SELECT COUNT(*)
FROM tabla;

SELECT COUNT(columna)
FROM tabla;

SELECT COUNT(DISTINCT columna)
FROM tabla;

Ejemplo guiado: clientes, correos y ciudades

SQL
SELECT COUNT(*) AS total_clientes,
       COUNT(email) AS clientes_con_email,
       COUNT(DISTINCT ciudad) AS ciudades_distintas
FROM clientes;
Resultado comprobado
total_clientesclientes_con_emailciudades_distintas
1296

La tabla contiene 12 filas. Tres clientes tienen email = NULL, por eso COUNT(email) devuelve 9. Madrid, Valencia, Bilbao, Sevilla, Zaragoza y A Coruña forman seis ciudades distintas.

Qué ocurre cuando no hay filas

Conjunto vacío
SELECT COUNT(*) AS productos_muy_caros
FROM productos
WHERE precio > 2000;

El resultado es 0. A diferencia de otras agregaciones como SUM, COUNT devuelve cero cuando el conjunto no contiene filas.

Evita contar filas multiplicadas por un JOIN

Después de relacionar una fila de cliente con varios pedidos, el cliente aparece una vez por pedido. COUNT(*) cuenta filas del resultado, no clientes únicos. Si la pregunta es “¿cuántos clientes aparecen?”, puede ser necesario COUNT(DISTINCT c.id).

Antes de contar, nombra la entidad. ¿Cuentas filas, pedidos, clientes con correo, productos distintos o grupos? Esa frase suele indicar qué expresión debe ir dentro de COUNT.

Errores frecuentes

Usar COUNT(columna) para contar todas las filas

Si la columna admite NULL, esas filas no se cuentan. Usa COUNT(*) cuando la pregunta sea cuántas filas cumplen el filtro.

Contar una constante esperando otra semántica

COUNT(1) cuenta filas porque la constante no es nula. No cuenta la columna con id 1 ni suele ser más claro que COUNT(*).

Práctica: pedidos por estado

Básica · agregación por grupo

Cuenta cuántos pedidos hay en cada estado

Devuelve estado y cantidad. Ordena primero por cantidad descendente y después por estado ascendente.

Compatibilidad y rendimiento

Las tres formas mostradas son comunes. El tipo exacto devuelto y las estrategias de ejecución dependen del motor. Un recuento total no debe suponerse instantáneo: PostgreSQL documenta que COUNT(*) sobre toda una tabla requiere trabajo proporcional a la tabla o a un índice que cubra sus filas.

Qué debes recordar

  • COUNT(*) cuenta filas.
  • COUNT(columna) omite valores nulos.
  • COUNT(DISTINCT columna) cuenta valores distintos no nulos.
  • Después de un JOIN, comprueba si la entidad se ha repetido.

Conceptos relacionados

Fuentes técnicas consultadas