HAVING opera na linha resumida - WHERE está operando em toda a tabela antes do GROUP BY é aplicado. (Você não pode colocar GROUP BY à parte, HAVING é uma cláusula reservada para uso com GROUP BY - deixando de fora o GROUP BY não altera a ação implícita que está ocorrendo nos bastidores). Também é importante observar que, por causa disso,
WHERE pode usar um índice enquanto HAVING não podes. (Em conjuntos de resultados desagrupados super triviais, você poderia teoricamente usar um índice para HAVING , mas nunca vi um otimizador de consulta realmente implementado dessa maneira).