HAVING
opera sulla riga riepilogativa - WHERE
sta operando sull'intero tavolo prima del GROUP BY
viene applicata. (Non puoi inserire GROUP BY
a parte, HAVING
è una clausola riservata all'uso con GROUP BY
- tralasciando il GROUP BY
non cambia l'azione implicita che si verifica dietro le quinte).
È anche importante notare che per questo motivo WHERE
può usare un indice mentre HAVING
non può. (Nei set di risultati non raggruppati super banali potresti teoricamente utilizzare un indice per HAVING
, ma non ho mai visto un Query Optimizer effettivamente implementato in questo modo).