Tutorial de SQL

Cómo usar GROUP BY en SQL

GROUP BY separa las filas en grupos, uno por cada valor distinto de una columna, y aplica una función como COUNT, SUM o AVG a cada grupo. Es lo mismo que hace una tabla dinámica de Excel, pero con una consulta. Aquí verás la sintaxis, qué columnas pueden ir en el SELECT y un ejemplo resuelto que cuenta alumnos por grupo.

GROUP BY: un resumen por grupo

COUNT, SUM y AVG resumen toda la tabla en una fila. Con GROUP BY el resumen se hace por grupos: una fila por cada valor distinto de la columna que indiques.

Imagina que separas las filas en montoncitos (uno por grupo) y aplicas la función a cada montón. Es lo que hace una tabla dinámica de Excel.

La columna del GROUP BY también va en el SELECT, para saber a qué grupo pertenece cada resultado.

Cómo se escribe

SELECT columna, COUNT(*) FROM tabla GROUP BY columna

GROUP BY columna
forma un grupo por cada valor distinto de la columna
columna (en el SELECT)
muestra el nombre del grupo
COUNT(*)
cuántas filas tiene cada grupo

Ejemplo resuelto

SELECT grupo, COUNT(*) FROM alumnos GROUP BY grupo
Número de fila#grupoCOUNT(*)
11° A4
21° B3
32° A3

Cuántos alumnos hay en cada grupo.

  • En el SELECT solo pon la columna del GROUP BY y funciones de agregado. Una columna suelta como nombre no tiene un único valor por grupo.
  • GROUP BY va después de FROM y del WHERE (si lo hay).

Preguntas frecuentes

¿Qué columnas puedo poner en el SELECT con GROUP BY?

La columna del GROUP BY y funciones de agregado como COUNT, SUM o AVG. Una columna suelta, como el nombre, no tiene un único valor por grupo.

¿Dónde va GROUP BY en la consulta?

Después de FROM y del WHERE, si lo hay.