IOKELU
Nivel: Basico
💡 Prueba las consultas:
Puedes ejecutar cualquier consulta SQL en nuestra consola interactiva: Abrir consola SQL →

GROUP BY en SQL: agrupa y resume información

La cláusula GROUP BY permite agrupar filas que comparten un valor común y aplicar funciones de agregación como COUNT, SUM, AVG, MAX o MIN. Es fundamental para generar reportes y estadísticas.

1. ¿Qué es GROUP BY?

GROUP BY agrupa filas que comparten un valor en una columna. Luego puedes aplicar funciones de agregación para obtener estadísticas por grupo.


SELECT ciudad, COUNT(*) 
FROM usuarios
GROUP BY ciudad;
    

2. Agrupación simple


SELECT categoria, SUM(precio)
FROM productos
GROUP BY categoria;
    

3. Funciones de agregación


SELECT ciudad, AVG(edad)
FROM usuarios
GROUP BY ciudad;
    

4. Agrupar por varias columnas


SELECT ciudad, genero, COUNT(*)
FROM usuarios
GROUP BY ciudad, genero;
    

5. Filtrar grupos con HAVING

HAVING funciona como WHERE, pero para grupos.


SELECT ciudad, COUNT(*) 
FROM usuarios
GROUP BY ciudad
HAVING COUNT(*) > 2;
    

6. Ejemplos prácticos


SELECT categoria, SUM(precio) FROM productos GROUP BY categoria;
SELECT ciudad, AVG(edad) FROM usuarios GROUP BY ciudad;
SELECT departamento, COUNT(*) FROM empleados GROUP BY departamento;
SELECT ciudad, COUNT(*) FROM usuarios GROUP BY ciudad HAVING COUNT(*) > 1;
    

7. Ejercicios para practicar

8. Mini‑proyecto: Reporte de ventas por categoría


CREATE TABLE ventas (
    id INT PRIMARY KEY,
    producto VARCHAR(50),
    categoria VARCHAR(50),
    precio DECIMAL(10,2)
);

INSERT INTO ventas VALUES (1, 'Camiseta', 'Ropa', 19.99);
INSERT INTO ventas VALUES (2, 'Pantalón', 'Ropa', 29.99);
INSERT INTO ventas VALUES (3, 'Auriculares', 'Electrónica', 49.99);

SELECT categoria,
       COUNT(*) AS total_productos,
       SUM(precio) AS suma_precios,
       AVG(precio) AS precio_promedio
FROM ventas
GROUP BY categoria;
    

9. Errores comunes

10. Preguntas frecuentes

¿GROUP BY es difícil?

No, pero requiere práctica para entender cómo agrupa los datos.

¿HAVING reemplaza a WHERE?

No, HAVING filtra grupos; WHERE filtra filas.


Siguiente guía

SQL Básico – HAVING →