HAVING filtre les groupes après le regroupement, en général sur le résultat d'un agrégat, alors que WHERE filtre les lignes avant. Une condition portant sur une ligne individuelle va dans WHERE, ce qui est plus efficace, et une condition sur un agrégat dans HAVING.
Exemple
SELECT pays, COUNT(*) FROM clients GROUP BY pays HAVING COUNT(*) > 100;