En este tema, aprenderemos cómo utilizar la cláusula GROUP BY
en SQL para agrupar filas que tienen valores en común en columnas específicas. Esta técnica es fundamental para realizar operaciones de agregación, como calcular sumas, promedios, conteos, etc., sobre grupos de datos.
Conceptos Clave
- Cláusula
GROUP BY
: Se utiliza para agrupar filas que tienen los mismos valores en columnas especificadas. - Funciones de agregación: Funciones como
SUM()
,AVG()
,COUNT()
,MIN()
, yMAX()
que se aplican a los grupos de datos. - Orden de ejecución: La cláusula
GROUP BY
se coloca después de la cláusulaWHERE
y antes de la cláusulaORDER BY
.
Sintaxis Básica
SELECT columna1, columna2, función_agregación(columna3) FROM nombre_tabla WHERE condición GROUP BY columna1, columna2 ORDER BY columna1, columna2;
Ejemplo Práctico
Supongamos que tenemos una tabla ventas
con la siguiente estructura y datos:
id_venta | producto | cantidad | precio | fecha_venta |
---|---|---|---|---|
1 | A | 10 | 100 | 2023-01-01 |
2 | B | 5 | 50 | 2023-01-02 |
3 | A | 7 | 70 | 2023-01-03 |
4 | B | 3 | 30 | 2023-01-04 |
5 | A | 8 | 80 | 2023-01-05 |
Queremos saber la cantidad total vendida y el ingreso total por cada producto. Utilizaremos la cláusula GROUP BY
junto con las funciones de agregación SUM()
.
SELECT producto, SUM(cantidad) AS total_cantidad, SUM(precio) AS total_ingreso FROM ventas GROUP BY producto;
Explicación del Código
SELECT producto, SUM(cantidad) AS total_cantidad, SUM(precio) AS total_ingreso
: Seleccionamos la columnaproducto
y aplicamos las funciones de agregaciónSUM()
a las columnascantidad
yprecio
. Renombramos los resultados conAS
para mayor claridad.FROM ventas
: Indicamos la tabla de la cual estamos obteniendo los datos.GROUP BY producto
: Agrupamos los resultados por la columnaproducto
.
Resultado
producto | total_cantidad | total_ingreso |
---|---|---|
A | 25 | 250 |
B | 8 | 80 |
Ejercicio Práctico
Ejercicio 1
Dada la siguiente tabla empleados
:
id_empleado | departamento | salario |
---|---|---|
1 | Ventas | 5000 |
2 | IT | 6000 |
3 | Ventas | 5500 |
4 | IT | 7000 |
5 | HR | 4500 |
Escribe una consulta SQL para encontrar el salario promedio por departamento.
Solución
Resultado Esperado
departamento | salario_promedio |
---|---|
Ventas | 5250 |
IT | 6500 |
HR | 4500 |
Retroalimentación y Consejos
- Error Común: Olvidar incluir todas las columnas no agregadas en la cláusula
GROUP BY
. Por ejemplo, si seleccionasproducto
yfecha_venta
, ambas deben estar enGROUP BY
. - Consejo: Utiliza alias (
AS
) para renombrar las columnas resultantes de las funciones de agregación, lo que hace que los resultados sean más legibles. - Optimización: Asegúrate de que las columnas utilizadas en
GROUP BY
estén indexadas para mejorar el rendimiento de la consulta.
Conclusión
La cláusula GROUP BY
es una herramienta poderosa en SQL que permite agrupar datos y aplicar funciones de agregación para obtener información resumida. Con la práctica, podrás utilizar GROUP BY
para realizar análisis complejos y obtener insights valiosos de tus datos. En el próximo tema, exploraremos la cláusula HAVING
, que se utiliza para filtrar grupos de datos después de aplicar GROUP BY
.
Curso de SQL
Módulo 1: Introducción a SQL
Módulo 2: Consultas básicas de SQL
- Instrucción SELECT
- Filtrando datos con WHERE
- Ordenando datos con ORDER BY
- Limitando resultados con LIMIT
Módulo 3: Trabajando con múltiples tablas
Módulo 4: Filtrado avanzado de datos
- Usando LIKE para coincidencia de patrones
- Operadores IN y BETWEEN
- Valores NULL y IS NULL
- Agregando datos con GROUP BY
- Cláusula HAVING
Módulo 5: Manipulación de datos
Módulo 6: Funciones avanzadas de SQL
Módulo 7: Subconsultas y consultas anidadas
- Introducción a subconsultas
- Subconsultas correlacionadas
- EXISTS y NOT EXISTS
- Usando subconsultas en cláusulas SELECT, FROM y WHERE
Módulo 8: Índices y optimización de rendimiento
- Entendiendo los índices
- Creación y gestión de índices
- Técnicas de optimización de consultas
- Análisis del rendimiento de consultas
Módulo 9: Transacciones y concurrencia
- Introducción a las transacciones
- Propiedades ACID
- Instrucciones de control de transacciones
- Manejo de concurrencia