Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

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 BY con ORDER BY para ordenar tus resultados agregados y facilitar el análisis. Ten en cuenta que ORDER BY se procesa después de GROUP BY, lo que puede afectar al rendimiento y a los resultados.
  • Utiliza HAVING para filtrar grupos. Utiliza la cláusula HAVING para filtrar los grupos después de la etapa de agregación, a diferencia de WHERE, 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 SELECT en la cláusula GROUP BY para evitar errores.
  • Ten en cuenta el rendimiento con grandes conjuntos de datos. Ten en cuenta que utilizar GROUP BY con grandes conjuntos de datos puede afectar al rendimiento. Considera la posibilidad de indexar las columnas utilizadas en GROUP BY para optimizar la ejecución de las consultas.