GROUP BY con una o varias columnas
Agrupe filas por una o varias columnas para producir subtotales y desgloses por categoría, y aprenda a interpretar los planes de consultas GROUP BY.
GROUP BY con una o varias columnas es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
Qué hace GROUP BY
GROUP BY divide las filas en grupos según uno o más valores de columna y, después, aplica funciones de agregación a cada grupo.
Agrupación por una columna
Total de pedidos por usuario:
SELECT user_id, COUNT(*) AS order_count, SUM(total) AS revenue
FROM orders
GROUP BY user_id
ORDER BY revenue DESC;Agrupación por varias columnas
Subgrupos por categoría y país:
SELECT country, category, SUM(total) AS revenue
FROM orders o
JOIN products p ON p.id = o.product_id
JOIN users u ON u.id = o.user_id
GROUP BY country, category
ORDER BY country, revenue DESC;Toda columna seleccionada debe agruparse o agregarse
Regla del estándar SQL:
-- WRONG — email is neither grouped nor aggregated:
SELECT user_id, email, COUNT(*)
FROM orders
GROUP BY user_id; -- ERROR
-- RIGHT — group by both, or use an aggregate:
SELECT user_id, MAX(email) AS email, COUNT(*)
FROM orders
GROUP BY user_id;GROUP BY mediante una expresión
Agrupe por el resultado de una expresión (por ejemplo, un intervalo mensual):
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY date_trunc('month', created_at)
ORDER BY month;GROUP BY mediante posición o alias
Puede agrupar por la posición o el alias de una lista SELECT (PostgreSQL):
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY month -- alias
ORDER BY 1; -- positionConjuntos de agrupación, ROLLUP y CUBE
Calcule varias agrupaciones en una sola consulta, ideal para subtotales:
SELECT country, category, SUM(total)
FROM orders o JOIN ...
GROUP BY ROLLUP (country, category);
-- Returns: per (country, category), per country, grand totalLos grupos vacíos no existen
GROUP BY solo devuelve grupos que contienen al menos una fila. Si desea todas las categorías (incluidas las que tienen cero pedidos), haga un LEFT JOIN desde la lista maestra y realice la agregación.
GROUP BY e índices
El planificador puede usar una agregación por hash (crear una tabla hash de grupos) o una estrategia de ordenación y agrupación. Los índices en la columna de agrupación pueden acelerar el segundo enfoque.
Funciones de ventana frente a GROUP BY
GROUP BY combina varias filas en una sola. Las funciones de ventana añaden columnas agregadas y conservan todas las filas. Elija la herramienta adecuada; este tema se trata en Window Functions Deep Dive.
Alias en HAVING frente a WHERE
Orden lógico: FROM → WHERE → GROUP BY → HAVING → SELECT. WHERE no puede acceder a las agregaciones; HAVING sí.
Resumen
GROUP BY es la herramienta fundamental de los informes.
- Toda columna seleccionada debe agruparse o agregarse
- Agrupe por columnas, expresiones o alias
- Use ROLLUP/CUBE/GROUPING SETS para tablas cruzadas
Comprobación rápida
En una consulta GROUP BY country, ¿puede la lista SELECT incluir una columna city que no esté agregada ni agrupada?
Preguntas frecuentes
¿La lección «GROUP BY con una o varias columnas» es gratis?
Sí — el texto completo de «GROUP BY con una o varias columnas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «GROUP BY con una o varias columnas»?
Agrupe filas por una o varias columnas para producir subtotales y desgloses por categoría, y aprenda a interpretar los planes de consultas GROUP BY. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «GROUP BY con una o varias columnas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- COUNT, SUM, AVG, MIN y MAX
- GROUP BY con una o varias columnas
- HAVING frente a WHERE
- Errores habituales: valores NULL en agregaciones