En este capítulo, aprenderás a usar la cláusula GROUP BY de SQL con varios ejemplos prácticos. También te mostraré la diferencia que tiene GROUP BY y ORDER BY.
¿Qué es GROUP BY?
GROUP BY es una cláusula de SQL que se usa para agrupar registros en un conjunto de resultados en función de los valores de una o más columnas. Se utiliza a menudo con funciones de agregado (como pueden ser COUNT(), MAX(), MIN(), SUM() y AVG()).
Sintaxis
La sintaxis básica de la cláusula GROUP BY es la siguiente:
SELECT columna1, columna2, ... FROM nombre_tabla WHERE condición GROUP BY columna1, columna2, ... ORDER BY columna1, columna2, ...;
En este ejemplo, columna1 y columna2 son las columnas por las que se agrupa el conjunto de resultados. La cláusula WHERE se utiliza para filtrar las filas antes de agruparlas. La cláusula ORDER BY se usa para ordenar el conjunto de resultados final.
Diferencia entre ORDER BY y GROUP BY
Antes de empezar con GROUP BY, es conveniente que veas las diferencias que tiene con ORDER BY, ya que una de las cosas que suelen pasar al empezar a aprender este tema, es pensar que hacen lo mismo.
Principalmente, quédate con esto. ORDER BY ordena, GROUP BY agrupa.
En el siguiente ejemplo, le digo que me muestre los continentes y que me los ordene en orden ascendente (por defecto es ASC) de la tabla «Country».
SELECT Continent FROM Country ORDER BY Continent;
El resultado da 239 registros. Aparecen todas las filas de países que tiene «Country». Sin embargo, si quieres que se agrupe el resultado en torno a los valores diferentes, puedes utilizar GROUP BY:
SELECT Continent FROM Country GROUP BY Continent;
Esta vez, solo hay 7 registros (aunque América sea realmente 1 solo continente).
La función de agregado COUNT() con GROUP BY
Las funciones de agregado se usan muy a menudo con GROUP BY. Empecemos por la función COUNT().
Lo que quiero hacer en la siguiente consulta, es agrupar todos los continentes y sacar un conteo del total de países que tiene cada continente.
SELECT Continent AS Continente, COUNT(*) AS "Total países" FROM Country GROUP BY Continent;
Con esto, hemos agrupado todos los registros de la tabla por continente con GROUP BY y con COUNT, los hemos contado.
La función de agregado SUM() con GROUP BY
Para el siguiente ejemplo, vamos a sumar toda la población agrupada en continentes.
SELECT Continent AS Continente, SUM(Population) AS "Total población" FROM Country GROUP BY Continent;
Esta vez, seguimos agrupando por continente, pero conseguimos con SUM(), obtener la suma de la población en cada continente.
Las funciones de agregado MIN() y MAX() en agrupaciones
En el siguiente ejemplo utilizo las funciones de agregado MIN() y MAX() junto con GROUP BY para agrupar según continentes y su población más baja o más alta en cada caso.
SELECT Continent AS Continente, MIN(Population) AS "Población mínima" FROM Country GROUP BY Continent;
En Oceanía, antártica y África hay algún
SELECT Continent AS Continente, MAX(Population) AS "Población máxima" FROM Country GROUP BY Continent;
Agrupar por varias columnas
Para terminar, vamos a ver un ejemplo de cómo se agruparía con más de una columna a la vez.
SELECT Continent AS "Continente", Region AS "Región", COUNT(*) AS "Total países" FROM country GROUP BY Continent, Region ORDER BY Continent;
En este caso, se agrupan los continentes en varias partes, las agrupaciones de las regiones.
No te pierdas nada del curso Máster en SQL.
Usted tiene un gran Don para explicar. Empece este curso y no he parado de leerlo. Creo que ya he llegado hasta donde usted va. Que Dios lo bendiga. Nos da oportunidad a los que no tenemos otras opciones.
Hola, ¡muchas gracias! Sí, este es el último que tengo. Estoy trabajando en los próximos. Te mando bendiciones