Saltar al contenido principal

Cláusula GROUP BY de MySQL

La cláusula `GROUP BY` de MySQL se utiliza para ordenar datos idénticos en grupos. Se suele emplear con funciones de agregación (como `COUNT`, `SUM`, `AVG`) para realizar cálculos sobre cada grupo de datos.

Utilización

La cláusula `GROUP BY` se utiliza cuando necesitas agregar datos y agrupar filas que tienen los mismos valores en columnas especificadas. Sigue las cláusulas `FROM` y `WHERE` de una consulta SQL.


SELECT column1, aggregate_function(column2)
FROM table_name
[WHERE condition]
GROUP BY column1;

En esta sintaxis, `GROUP BY columna1` organiza el conjunto de resultados en grupos en función de los valores de `columna1`.

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 datos por la columna `departamento`.

2. Agrupar con varias columnas


SELECT department, job_title, AVG(salary)
FROM employees
GROUP BY department, job_title;

Aquí se calcula el salario medio de cada puesto dentro de cada departamento, agrupando los datos por "departamento" y "puesto".

3. Utilizar GROUP BY con HAVING


SELECT department, SUM(sales)
FROM sales_data
GROUP BY department
HAVING SUM(sales) > 10000;

Este ejemplo agrupa los datos por `departamento` y luego filtra los grupos utilizando `HAVING`, mostrando sólo aquellos departamentos con ventas totales superiores a 10.000.

Consejos y buenas prácticas

  • Garantiza la coherencia de las columnas. Incluye sólo columnas no agregadas en la cláusula `GROUP BY` para evitar errores. Si se incluyen columnas no agregadas en la cláusula `SELECT` sin especificarlas en la cláusula `GROUP BY`, pueden producirse resultados inesperados o errores.
  • Utiliza funciones agregadas. Combina `GROUP BY` con funciones de agregación para resumir los datos de forma eficaz.
  • Ordena los grupos lógicamente. Utiliza `ORDENAR POR` después de `GRUPO POR` para ordenar los resultados y facilitar su lectura.
  • Filtra grupos con HAVING. Utiliza `HAVING` en lugar de `WHERE` para filtrar los resultados basándote en cálculos agregados. Recuerda que `DÓNDE` filtra las filas antes de agruparlas, mientras que `DÓNDE` filtra los grupos después de la agregación.
  • Ten en cuenta el rendimiento. Cuando utilices `GROUP BY` en grandes conjuntos de datos, ten en cuenta el impacto potencial en el tiempo de ejecución de la consulta. Considera estrategias de optimización, como la indexación, para mejorar el rendimiento.