Todas las publicaciones
post31 de mayo de 2026

SQL: COUNT vs COUNT DISTINCT

#sql#count#aggregations
sql
-- Wrong: counts orders, not users
SELECT COUNT(*) AS active_users
FROM orders
WHERE created_at >= '2026-05-01';

-- Right: counts unique users
SELECT COUNT(DISTINCT user_id) AS active_users
FROM orders
WHERE created_at >= '2026-05-01';

COUNT(*) cuenta toda fila, incluyendo duplicados. COUNT(DISTINCT columna) cuenta solo valores únicos de esa columna. La diferencia importa enormemente al reportar métricas de negocio.

Ejemplo clásico: cuántos usuarios hicieron una orden este mes? COUNT(*) en la tabla orders cuenta órdenes, no usuarios. COUNT(DISTINCT user_id) cuenta usuarios. Confundir las dos es uno de los errores SQL más comunes que produce dashboards incorrectos.