Aprende SQL

Agrupando datos: GROUP BY y HAVING

GROUP BY agrupa filas que tienen los mismos valores en una columna, permitiéndote aplicar funciones de agregación a cada grupo.

Filas originales
ZeldaNintendo
MarioNintendo
GTA VRockstar
RDR 2Rockstar
FF VIISquare
MinecraftMojang
GROUP BY developer
Grupos + COUNT
Nintendo
ZeldaMario
2
Rockstar
GTA VRDR 2
2
Square
FF VII
1
Mojang
Minecraft
1

GROUP BY

SELECT developer, COUNT(*) AS total
FROM videogames
GROUP BY developer;

Esta consulta cuenta cuántos juegos tiene cada desarrollador.

HAVING: Filtrar grupos

HAVING es como WHERE, pero para filtrar grupos en lugar de filas individuales. Se usa después de GROUP BY:

SELECT developer, COUNT(*) AS total
FROM videogames
GROUP BY developer
HAVING COUNT(*) > 1;

Diferencia entre WHERE y HAVING

  • WHERE filtra filas antes de agrupar.
  • HAVING filtra grupos después de agrupar.
SELECT developer, COUNT(*) AS total
FROM videogames
WHERE year > 2000         -- Primero filtra filas
GROUP BY developer        -- Luego agrupa
HAVING COUNT(*) > 1;      -- Finalmente filtra grupos

Agrupar por múltiples columnas

Puedes agrupar por más de una columna para obtener combinaciones más específicas. Por ejemplo, si quisieras saber cuántos juegos publicó cada desarrollador en cada año:

SELECT developer, year, COUNT(*) AS total
FROM videogames
GROUP BY developer, year;

Esto crea un grupo por cada combinación única de developer y year. Es muy útil cuando necesitas un nivel de detalle mayor en tus análisis.

Tip: También puedes usar números de posición en GROUP BY, como GROUP BY 1, 2 (donde 1 y 2 se refieren a la primera y segunda columna del SELECT). Sin embargo, se recomienda usar los nombres de las columnas para que la consulta sea más legible y fácil de mantener.

Nuestra tabla

Nombre de la Tabla: videogames
idtitledeveloperyearplaytime_hours
1The Legend of ZeldaNintendo198620
2Super Mario Bros.Nintendo198510
3Final Fantasy VIISquare Enix199740
4The Witcher 3CD Projekt Red2015100
5MinecraftMojang Studios20119999
6Grand Theft Auto VRockstar Games201380
7Dark SoulsFromSoftware201160
8Portal 2Valve20118
9Red Dead Redemption 2Rockstar Games201870
10The Last of UsNaughty Dog201315
11Halo: Combat EvolvedBungie200110
12God of WarSanta Monica Studio201825

Ejercicios