Imagina que tienes una gran canasta llena de diferentes frutas. Quieres organizarlas, así que decides agrupar todas las frutas del mismo tipo juntas. Eso es lo que hace la cláusula GROUP BY en SQL.

GROUP BY toma las filas de una tabla y crea grupos separados donde los valores en ciertas columnas son iguales. Esto es realmente útil cuando deseas hacer cálculos o utilizar funciones como SUM, AVG, MAX, MIN o COUNT en grupos de filas en lugar de solo una fila a la vez.

Entonces, si tienes una tabla llena de datos y deseas organizarlos en grupos basados en los valores de ciertas columnas, GROUP BY es la herramienta que necesitas.

Sintaxis:

SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

Uso Básico de GROUP BY


Imagina que tienes una lista con todos los artículos vendidos en una tienda. Esta lista incluye información como el ID del pedido, el tipo de producto, su categoría y cuántos se vendieron.

Si deseas saber la cantidad total vendida para cada categoría de producto, puedes utilizar la cláusula GROUP BY en SQL, junto con la función SUM, de la siguiente manera:

SELECT 
	categoria, 
	SUM(cantidad_vendida) AS cantidad_total_vendida
FROM datos_ventas
GROUP BY 
	categoria;

En este ejemplo, nuestra consulta de SQL primero agrupa todos los artículos de la lista por su categoria (como agrupar todas las frutas, todas las verduras, todas las carnes, etc.). Luego, para cada categoría, suma la cantidad_vendida para obtener el total vendido. El resultado será una nueva lista que muestra cada categoría y la cantidad total vendida para esa categoría. ¡Es como crear un resumen de las ventas para cada tipo de producto!

Combinando GROUP BY con WHERE


Digamos que tienes una tienda y quieres ver cuántos artículos de cada categoría has vendido desde principios de 2020. Con SQL, puedes hacer esto utilizando una combinación de las cláusulas WHERE y GROUP BY.

La cláusula WHERE nos permite filtrar los datos de ventas para ver solo las ventas realizadas a partir del 1 de enero de 2020. Después de filtrar los datos, los agrupamos por categoría de producto y sumamos la cantidad vendida en cada grupo. Aquí tienes cómo se vería el código SQL:

Ejemplo:

SELECT 
	categoria, 
	SUM(cantidad_vendida) AS cantidad_total_vendida
FROM datos_ventas
WHERE 
	fecha_pedido >= '2020-01-01'
GROUP BY 
	categoria;

En este código, datos_ventas es el nombre de nuestra lista de ventas, categoria es el tipo de producto, cantidad_vendida es cuántos se vendieron y fecha_pedido es la fecha en que se vendió el artículo. El resultado será una lista que muestra cada categoría y la cantidad total vendida en esa categoría desde principios de 2020.

Utilizando GROUP BY con HAVING