Agregaciones · grupos

GROUP BY

GROUP BY reúne filas con la misma clave para calcular un resumen independiente en cada grupo.

Lectura: 5–7 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué hace GROUP BY

GROUP BY divide las filas en conjuntos que comparten uno o varios valores. Después, las funciones de agregación calculan un resultado para cada conjunto.

Sin agrupación, COUNT, SUM o AVG suelen producir una sola fila. Al agrupar por ciudad, estado o categoría, producen una fila por cada valor distinto de esa clave.

Cómo pensar los grupos

Estructura
SELECT clave_del_grupo,
       FUNCION(valor) AS resumen
FROM tabla
WHERE condicion
GROUP BY clave_del_grupo;

Cada columna seleccionada debe tener un papel claro: o identifica el grupo o contiene un cálculo agregado. Pregúntate «¿qué representa una fila final?». En un resumen por ciudad, una fila representa una ciudad, no un cliente.

WHERE filtra filas antes de formar los grupos. HAVING filtra grupos después de calcularlos. Esta diferencia determina dónde debe ir cada condición.

Ejemplo guiado

Contamos cuántos clientes hay en cada ciudad:

SQL
SELECT ciudad, COUNT(*) AS clientes
FROM clientes
GROUP BY ciudad
ORDER BY clientes DESC, ciudad ASC;
Resultado comprobado
ciudadclientes
Madrid4
Bilbao2
Sevilla2
Valencia2
A Coruña1
Zaragoza1

Las doce filas originales se convierten en seis grupos. El orden no forma los grupos: únicamente presenta primero las ciudades con más clientes.

Error frecuente

Seleccionar una columna que no identifica el grupo

SELECT ciudad, nombre, COUNT(*) ... GROUP BY ciudad no define qué nombre debe mostrarse para una ciudad con varias personas. Algunos motores rechazan la consulta y otros pueden devolver un valor indeterminado. Selecciona solo las claves agrupadas y los cálculos agregados.

Comprueba lo aprendido

Básica · un grupo por estado

Cuenta los pedidos por estado

Devuelve una fila por cada estado de la tabla pedidos y cuenta sus pedidos. Llama pedidos al recuento y ordena por estado.

Compatibilidad entre motores

La agrupación básica es portable. Los motores difieren en extensiones como agrupaciones múltiples, ROLLUP o CUBE, y en cuánto permiten seleccionar columnas no agrupadas. Para escribir consultas fiables, incluye en GROUP BY las columnas no agregadas que aparecen en el resultado.

Qué debes recordar

  • GROUP BY define qué representa cada fila resumida.
  • Las agregaciones se calculan dentro de cada grupo.
  • WHERE actúa antes de agrupar.
  • No mezcles columnas sueltas con resultados agregados.

Conceptos relacionados

Fuentes técnicas consultadas