← SQL Fundamentals

HAVING: filtra grupos

WHERE filtra filas antes de agrupar; HAVING filtra grupos después de agrupar. Por eso una condición sobre COUNT, SUM o AVG no puede escribirse en WHERE: cuando WHERE se evalúa, los grupos todavía no existen.

SELECT city, COUNT(*) AS total_students
FROM students
GROUP BY city
HAVING COUNT(*) > 1;

El orden es WHERE → GROUP BY → HAVING. Puedes combinarlos: filtrar filas, agrupar y conservar solo los grupos que cumplen la condición.

01

Conteo por ciudad

citytotal_students
Madrid3
Sevilla2
Valencia1
Bilbao1
02

Filtrar los grupos

SELECT city, COUNT(*) AS total_students
FROM students
GROUP BY city
HAVING COUNT(*) > 1;
03

Solo los grupos que cumplen

citytotal_students
Madrid3
Sevilla2
04

WHERE no serviría

Que una ciudad tenga 3 estudiantes es una propiedad del grupo; ninguna fila individual la contiene.

Ahora te toca a ti
Usa lo que acabas de aprender.