Si deseas agrupar filas con valores idénticos, SQL GROUP BY es la in­s­tru­c­ción adecuada. Suele uti­li­zar­se en co­m­bi­na­ción con funciones de agre­ga­ción.

¿Qué es SQL GROUP BY?

En el Stru­c­tu­red Query Language, SQL GROUP BY es una in­s­tru­c­ción que se utiliza para agrupar filas con valores idénticos. Se utiliza con el comando SQL SELECT y sigue a la in­s­tru­c­ción WHERE. SQL GROUP BY se utiliza a menudo en co­m­bi­na­ción con funciones como SQL AVG(), SQL COUNT(), MAX(), MIN() o SUM(). Esto te permite realizar cálculos y mostrar los re­su­l­ta­dos dentro de tu tabla. La in­s­tru­c­ción es muy útil si se quiere de­te­r­mi­nar una in­s­tru­c­ción o re­la­cio­nar valores entre sí.

Se­r­vi­do­res virtuales (VPS)
VPS rentables en se­r­vi­do­res Dell En­te­r­pri­se
  • 1 Gb/s de ancho de banda y tráfico ilimitado
  • 99,99 % de tiempo de actividad y ce­r­ti­fi­ca­ción ISO
  • Soporte 24/7 ga­la­r­do­na­do y asesor personal

Sintaxis y fu­n­cio­na­li­dad

La sintaxis básica de SQL GROUP BY es la siguiente:

SELECT columna1, columna2, columna3, … 
FROM nombre_de_tabla 
GROUP BY columna1, columna2, columna3, …;
sql

Sin embargo, la versión con una cláusula WHERE, que permite integrar de­te­r­mi­na­das co­n­di­cio­nes, es mucho más común:

SELECT columna1, columna2, columna3, … 
FROM nombre_de_tabla 
WHERE condición 
GROUP BY columna1, columna2, columna3, … 
ORDER BY columna 1, columna2, columna3, …;
sql

Ejemplo de uso con COUNT()

Para ilustrar cómo puedes utilizar SQL GROUP BY, crearemos una tabla sencilla llamada “Lista de clientes”. Ésta contiene columnas para el número de cliente, el nombre, la ubicación y los artículos comprados:

Número de cliente Nombre Ubicación Artículo
1427 Pérez Madrid 13
1377 Martín Barcelona 9
1212 Hernández Barcelona 15
1431 Rodríguez Sevilla 22
1118 García Madrid 10

Ahora podemos utilizar SQL GROUP BY en co­m­bi­na­ción con la función COUNT(), por ejemplo, para listar cuántos clientes proceden de qué ciudades. He aquí el código co­rre­s­po­n­die­n­te:

SELECT Ubicación, COUNT(*) AS Cantidad 
FROM Lista_de_clientes 
GROUP BY Ubicación;
sql

Como resultado, obtenemos esta nueva tabla:

Ubicación Cantidad
Sevilla 1
Madrid 2
Barcelona 2

Hemos utilizado SQL Aliases para mostrar los re­su­l­ta­dos como un “número”.

La sentencia junto con SUM()

En el siguiente ejemplo, uti­li­za­mos SQL GROUP BY en co­m­bi­na­ción con SUM() para de­te­r­mi­nar y mostrar cuántos artículos se pidieron a Barcelona:

SELECT Ubicación, SUM(Artículo) AS Total 
FROM Lista_de_clientes 
WHERE Ubicación = 'Barcelona' 
GROUP BY Ubicación;
sql

Como resultado obtenemos:

Ubicación Total
Barcelona 24

Uso con ORDER BY

También es posible una co­m­bi­na­ción con ORDER BY. Para nuestra tabla, ordenamos por el mayor número de artículos pedidos por cliente y por ciudad. Empezamos por la localidad en la que un cliente ha comprado más artículos. El código co­rre­s­po­n­die­n­te, para el que co­m­bi­na­mos SQL GROUP BY con la función MAX() y ORDER BY, es este:

SELECT Ubicación, MAX(Artículo) AS MayorCantidad 
FROM Lista_de_clientes 
GROUP BY Ubicación ORDER BY MayorCantidad DESC;
sql

Y el resultado sería:

Ubicación Mayor cantidad
Sevilla 22
Barcelona 15
Madrid 13

En co­m­bi­na­ción con HAVING

También puedes combinar SQL GROUP BY con SQL HAVING. En el siguiente ejemplo, eli­mi­na­mos de la lista aquellos clientes cuyo número de cliente es inferior a 1300. Ordenamos las personas restantes según el número de artículos que han pedido en orden as­ce­n­de­n­te:

SELECT Ubicación, Número de cliente, MIN(Artículo) AS MenorCantidad 
FROM Lista_de_clientes 
GROUP BY Ubicación, Número_de_cliente HAVING Número_de_cliente > 1300;
sql

Obtenemos esta tabla como nuevo resultado:

Ubicación Número de cliente Me­no­r­Ca­n­ti­dad
Barcelona 1377 9
Madrid 1427 13
Sevilla 1431 22

Al­te­r­na­ti­vas a SQL GROUP BY

Una al­te­r­na­ti­va popular a SQL GROUP BY es la sentencia PARTITION BY. La di­fe­re­n­cia es que todos los valores ori­gi­na­les se conservan y se muestran. Además, muchas de las funciones agregadas me­n­cio­na­das an­te­rio­r­me­n­te también funcionan sin SQL GROUP BY.

Consejo

Una base de datos a tu medida: con el Hosting SQL Server de IONOS, no solo podrás elegir entre MSSQL, MySQL o MariaDB, sino que también te be­ne­fi­cia­rás de un re­n­di­mie­n­to ex­trao­r­di­na­rio, sólidas funciones de seguridad y ase­so­ra­mie­n­to personal.

Ir al menú principal