GROUP BY en SQL

La cláusula GROUP BY en SQL agrupa filas que comparten el mismo valor en una o varias columnas, para poder resumirlas con funciones de agregación ( COUNT , SUM , AVG …).

GROUP BY transforma filas individuales en resúmenes por categoría. Es el equivalente SQL de «agrupar por país y contar clientes» o «sumar ventas por mes».

Toda columna del SELECT que no esté agregada debe aparecer en el GROUP BY. Si filtras grupos, usa HAVING, no WHERE.

GROUP BY transforma filas individuales en resúmenes por categoría. Es el equivalente SQL de «agrupar por país y contar clientes» o «sumar ventas por mes».

Toda columna del SELECT que no esté agregada debe aparecer en el GROUP BY. Si filtras grupos, usa HAVING, no WHERE.

Por ejemplo, en lugar de listar cada cliente, puedes preguntar «¿cuántos clientes hay por país?». Cada país forma un grupo y COUNT cuenta las filas de ese grupo.

Las columnas del SELECT que no van dentro de una función de agregación deben aparecer en el GROUP BY .


Sintaxis GROUP BY

La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.

Plantilla

    SELECT columna_grupo, COUNT(*)
FROM nombre_tabla
WHERE condicion
GROUP BY columna_grupo
ORDER BY columna_grupo;
  

GROUP BY: contar clientes por país

Cuántos clientes hay en cada país:

COUNT por Pais

    SELECT Pais, COUNT(ID_Cliente) AS Total_Clientes
FROM Clientes
GROUP BY Pais;
  
Abrir en editor

Resultado: seis filas (un país por grupo). España suele ser el que más clientes tiene en la demo.

Pais Total_Clientes
España5
UK1
Francia1
Alemania1
Italia1
Suecia1
Resultado esperado de COUNT por Pais en la demo.

GROUP BY con ORDER BY

Puedes ordenar por el recuento de cada grupo, de mayor a menor:

Ordenar por COUNT

    SELECT Pais, COUNT(ID_Cliente) AS Total_Clientes
FROM Clientes
GROUP BY Pais
ORDER BY COUNT(ID_Cliente) DESC;
  
Abrir en editor

Resultado: los países ordenados de mayor a menor número de clientes (España primero en la demo).


GROUP BY con SUM en SQL

También puedes sumar una columna numérica dentro de cada grupo — aquí, ventas totales por país:

SUM(N_Ventas) por Pais

    SELECT Pais, SUM(N_Ventas) AS Ventas_Totales
FROM Clientes
GROUP BY Pais;
  

Resultado: una fila por país con la suma de N_Ventas de sus clientes.


Resumen

Cómo practicar en el editor

1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.

Comprueba lo aprendido

Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.