Al terminar esta lección podrás
- Crear grupos.
- Explicar qué representa cada fila resumida.
- Evitar columnas ambiguas.
Antes de empezar: Funciones de agregación. Explica en una frase qué recuerdas antes de continuar.
La idea, sin código
GROUP BY divide las filas en grupos que comparten uno o varios valores. Después, cada función de agregación se calcula dentro de cada grupo.
Pregunta guía: ¿qué representa cada fila antes y después de aplicar este concepto?
Sintaxis mínima
SELECT categoria, COUNT(*)
FROM tabla
GROUP BY categoria;Primer ejemplo guiado
| id | nombre | categoria | precio | stock |
|---|---|---|---|---|
| 1 | Teclado | Accesorios | 35 | 12 |
| 2 | Monitor | Pantallas | 189 | 5 |
| 3 | Ratón | Accesorios | 22 | 0 |
| 4 | Portátil | Equipos | 899 | 3 |
| 5 | Webcam | Accesorios | 59 | 8 |
Analiza la consulta antes de comprobar el resultado:
SELECT categoria, COUNT(*) AS productos, SUM(stock) AS unidades
FROM productos
GROUP BY categoria
ORDER BY categoria;| categoria | productos | unidades |
|---|---|---|
| Accesorios | 3 | 20 |
| Equipos | 1 | 3 |
| Pantallas | 1 | 5 |
Qué ocurre paso a paso
- GROUP BY crea un grupo por categoría.
- COUNT y SUM se calculan dentro de cada grupo.
- El resultado contiene una fila por categoría.
Error frecuente
Consulta o razonamiento problemático
SELECT categoria, nombre, COUNT(*) FROM productos GROUP BY categoria;nombre no identifica al grupo ni está agregado; su significado sería ambiguo.
Práctica guiada
Resuelve una sola dificultad cada vez
Cuenta pedidos por estado.
Solución razonada
SELECT estado, COUNT(*) AS pedidos FROM pedidos GROUP BY estado ORDER BY estado;Cada estado aparece una vez y muestra cuántos pedidos pertenecen a ese grupo.
Comprueba: identifica qué parte recupera, filtra, transforma, relaciona o modifica los datos.
Ahora sin guía
Transfiere lo aprendido
Calcula el salario medio por departamento.
Comparar con una solución posible
SELECT departamento, AVG(salario) AS salario_medio
FROM empleados
GROUP BY departamento;Puede existir otra solución válida. Comprueba que produce el resultado pedido y que puedes explicar cada cláusula.
Resumen para llevarte
- GROUP BY cambia la unidad del resultado.
- Las columnas no agregadas deben describir el grupo.
- Primero decide qué representa cada fila final.
Siguiente paso: Continúa con Filtrar grupos con HAVING.