Lección 4 de 6 · 2 min
Contar y cuadrar: COUNT, SUM y GROUP BY
Al terminar sabrás
10 min- Contar filas con COUNT para detectar duplicados o faltantes
- Sumar y promediar con SUM y AVG para cuadrar reportes
- Agrupar con GROUP BY para reconciliar totales por categoría
Construyes: La consulta que verifica si el total del dashboard cuadra con la suma real en la base.
Del "¿existe?" al "¿cuánto?"
Hasta ahora leías filas. Ahora las resumes: contar, sumar, promediar. Es lo que te deja verificar los números que muestra un reporte o dashboard contra la realidad de la base.
COUNT: contar filas
-- ¿Cuántas reservas hay en total?
SELECT COUNT(*) FROM reservas;
-- ¿Cuántas confirmadas?
SELECT COUNT(*) FROM reservas WHERE estado = 'confirmada';
El truco de QA más útil es COUNT(DISTINCT ...) para cazar duplicados:
SELECT COUNT(*) AS filas, COUNT(DISTINCT email) AS emails_unicos
FROM usuarios;
Si filas (1050) es mayor que emails_unicos (1000), tienes 50 emails duplicados. Un bug que la UI jamás muestra.
SUM y AVG: cuadrar montos
-- El número que debería mostrar el dashboard
SELECT SUM(total) AS ventas_del_dia
FROM reservas
WHERE estado = 'confirmada'
AND fecha >= '2026-07-14';
-- Ticket promedio
SELECT AVG(total) FROM reservas WHERE estado = 'confirmada';
GROUP BY: reconciliar por categoría
Para verificar reportes desglosados, agrupas:
-- Reservas por estado
SELECT estado, COUNT(*) AS cantidad
FROM reservas
GROUP BY estado;
-- Ventas por día
SELECT fecha::date AS dia, SUM(total) AS ventas
FROM reservas
WHERE estado = 'confirmada'
GROUP BY fecha::date
ORDER BY dia;
GROUP BY estado calcula el agregado por cada grupo. Ahora puedes comparar fila por fila contra el reporte: si el desglose por día no cuadra con el gráfico, sabes exactamente qué día revisar.
Este patrón —contar, sumar, agrupar, comparar— es el corazón del testing de datos y de la validación de ETL, el tema del próximo curso.
Comprueba lo aprendido en el quiz y cuadra el dashboard en el reto.
Compruébalo
0/3Responde sin mirar atrás. Verás la explicación al instante.
1. El dashboard dice 'Ventas del día: $2.400.000'. ¿Cómo lo verificas en la base?
2. ¿Para qué sirve GROUP BY?
3. COUNT(*) de la tabla usuarios devuelve 1050, pero COUNT(DISTINCT email) devuelve 1000. ¿Qué significa?
Reto: cuadra el dashboard
Escribe la consulta que suma el total de todas las reservas confirmadas del mes actual (el número que debería mostrar el dashboard).
Luego escribe una que muestre cuántas reservas hay por estado (pendiente, confirmada, cancelada).