Contar, agrupar y ordenar
Con tres palabras se responde el 80 % de las preguntas que te haces cada semana.
La forma de una consulta
select qué columnas quiero
from de qué tabla
where con qué condición
group by agrupando por
order by ordenado por
No hay más. Todo lo demás son variaciones.
Cuántos hay
select count(*) from clientes;
Cuántos hay de cada cosa
Aquí aparece la palabra que lo cambia todo, group by. Agrupa las filas que
comparten un valor y cuenta cada grupo:
select estado, count(*)
from pedidos
group by estado
order by count(*) desc;
Eso te dice, de una vez, cuántos pedidos tienes en cada estado y cuál manda.
La consulta que más veces salva el día
Agrupar por día:
select date(created_at) as dia, count(*)
from mensajes
group by 1
order by 1 desc;
Parece una tontería y no lo es. Un problema que crece desde hace tres semanas y un problema que empezó ayer piden buscar en sitios completamente distintos, y esta consulta los distingue en dos segundos. En OCC hubo una publicación rota durante más de un mes, y el error exacto llevaba doce días guardado en una tabla como esta, a una consulta de distancia.
Ejercicio
Sobre tus datos, responde con una consulta cada una:
- ¿Cuántos clientes nuevos entraron cada día del último mes?
- ¿Cuál es el estado más común de tus pedidos o de tus mensajes?
- ¿Qué día de la semana pasada tuviste más actividad?
Del resultado a la decisión
Una consulta no termina al devolver filas. Escribe qué harías si el número sube, baja o se mantiene. «Hay 42 pedidos pendientes» describe el presente; «si supera 30, otra persona ayuda a prepararlos» convierte el dato en una regla de trabajo.
Usa alias que se entiendan al leer el resultado:
select estado, count(*) as pedidos
from pedidos
where created_at >= current_date - interval '30 days'
group by estado
order by pedidos desc;
Errores que parecen respuestas
Un total sin periodo mezcla épocas distintas. Un grupo con valores escritos de varias formas separa lo que debería estar unido. Y ordenar alfabéticamente puede ocultar el grupo mayor. Antes de copiar una cifra, mira filtros, valores vacíos y unidad temporal.
Comprueba antes de continuar
- La pregunta está escrita antes que la consulta.
- El periodo y los filtros se ven en el código.
- El nombre de cada columna explica qué cuenta.
- Puedes repetir mañana la misma consulta.
Quédate con esto
where recorta, group by junta y order by coloca. Con esas tres decisiones
puedes convertir una tabla grande en una respuesta pequeña y reproducible.