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.

