HAVING operuje na podsumowanym wierszu - WHERE działa na całej tabeli przed GROUP BY jest stosowany. (Nie możesz umieścić GROUP BY na bok, HAVING jest klauzulą zarezerwowaną do użytku z GROUP BY - pomijając GROUP BY nie zmienia ukrytej akcji, która ma miejsce za kulisami).
Należy również zauważyć, że z tego powodu WHERE może używać indeksu, gdy HAVING Nie mogę. (W super trywialnych niezgrupowanych zestawach wyników można teoretycznie użyć indeksu dla HAVING , ale nigdy nie widziałem optymalizatora zapytań zaimplementowanego w ten sposób).