HAVING
opera en la fila resumida - WHERE
está operando en toda la tabla antes del GROUP BY
Está aplicado. (No puedes poner GROUP BY
aparte, HAVING
es una cláusula reservada para usar con GROUP BY
- omitiendo GROUP BY
no cambia la acción implícita que está ocurriendo tras bambalinas).
También es importante tener en cuenta que debido a esto, WHERE
puede usar un índice mientras HAVING
no poder. (En conjuntos de resultados no agrupados súper triviales, teóricamente podría usar un índice para HAVING
, pero nunca he visto un optimizador de consultas realmente implementado de esta manera).