De agregaciónestándar SQL

COUNT

Cuenta filas o valores que no son NULL.

Sintaxis

COUNT(*)
COUNT(<columna>)
COUNT(DISTINCT <columna>)

COUNT(*) cuenta todas las filas. COUNT(<columna>), solo aquellas en las que la columna no es NULL. COUNT(DISTINCT <columna>), cuántos valores distintos hay. Junto con GROUP BY cuenta por separado para cada grupo.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Cuántos empleados hay en total
SELECT COUNT(*) AS total
FROM employees;
total
5
Tres recuentos distintos
SELECT COUNT(*) AS all_rows,
COUNT(bonus) AS with_bonus,
COUNT(DISTINCT department) AS departments
FROM employees;
all_rowswith_bonusdepartments
533

Dos empleados no tienen bonus, así que COUNT(bonus) da 3, no 5.

Cuántas personas hay en cada departamento
SELECT department, COUNT(*) AS people
FROM employees
GROUP BY department
ORDER BY department;
departmentpeople
backend2
design1
frontend2

Ten en cuenta

COUNT(<columna>) se salta NULL en silencio. Si quieres el número de filas, escribe COUNT(*).

Si no hay filas, COUNT da 0, mientras que SUM da NULL. Así que no hace falta envolver COUNT en COALESCE.

Con LEFT JOIN, COUNT(*) cuenta 1 incluso donde no se encontró pareja. Para obtener 0, cuenta una columna de la tabla de la derecha: COUNT(o.id).

Funciones relacionadas