PostgreSQL GRUPO POR
La cláusula GROUP BY de PostgreSQL se utiliza para ordenar datos idénticos en grupos. Se suele utilizar con funciones de agregación como COUNT, SUM, AVG, MAX o MIN para realizar operaciones en cada grupo de datos.
Utilización
La cláusula GROUP BY se utiliza cuando necesitas organizar las filas que tienen los mismos valores en columnas especificadas en filas resumen. Sigue la declaración SELECT y cualquier función de agregación para determinar cómo deben agruparse los datos.
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
En esta sintaxis, GROUP BY column1 agrupa el conjunto de resultados por los valores de column1.
Ejemplos
1. Agrupación básica
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
Este ejemplo cuenta el número de empleados de cada departamento agrupando los resultados en función de la columna department.
2. Agrupar con SUMA
SELECT department, SUM(salary)
FROM employees
GROUP BY department;
Esta consulta calcula el salario total pagado por departamento, agrupando las filas por department y sumando la columna salary.
3. Agrupar con varias columnas
SELECT department, job_title, AVG(salary)
FROM employees
GROUP BY department, job_title;
Aquí, la consulta agrupa los datos por department y job_title, calculando el salario medio de cada combinación única de departamento y cargo.
4. Agrupar con HAVING
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
Este ejemplo filtra los datos agrupados para incluir sólo los departamentos con más de 10 empleados utilizando la cláusula HAVING.
Consejos y buenas prácticas
- Selecciona sólo las columnas necesarias. Utiliza sólo las columnas por las que pretendas agrupar o agregar para garantizar una ejecución eficaz de la consulta.
- Ordena tus resultados. Combina
GROUP BYconORDER BYpara ordenar tus resultados agregados y facilitar el análisis. Ten en cuenta queORDER BYse procesa después deGROUP BY, lo que puede afectar al rendimiento y a los resultados. - Utiliza HAVING para filtrar grupos. Utiliza la cláusula
HAVINGpara filtrar los grupos después de la etapa de agregación, a diferencia deWHERE, que filtra las filas antes de la agregación. - Asegúrate de que la agrupación es correcta. Incluye siempre todas las columnas no agregadas de la sentencia
SELECTen la cláusulaGROUP BYpara evitar errores. - Ten en cuenta el rendimiento con grandes conjuntos de datos. Ten en cuenta que utilizar
GROUP BYcon grandes conjuntos de datos puede afectar al rendimiento. Considera la posibilidad de indexar las columnas utilizadas enGROUP BYpara optimizar la ejecución de las consultas.