A cláusula HAVING foi adicionada ao SQL porque a palavra-chave WHERE não pôde ser usada com funções agregadas.
Exemplo 01: Cidades com numero de clientes = 2
select count(CL.CLI_CODIGO) as Qtde_Clientes ,
cd.CID_NOME
from CLIENTE CL, CIDADE CD
where cl.CLI_CIDADE = cd.CID_CODIGO
group by cd.CID_NOME
HAVING count(CL.CLI_CODIGO) = 2
Exemplo 02: Produtos com o valor total maior que 10
select
I.IPED_PRODUTO,
P.PRO_NOME,
sum( I.IPED_QTDE) as Qtde,
avg( I.IPED_UNITARIO) as ValorMedio,
( sum( I.IPED_QTDE) * avg( I.IPED_UNITARIO) ) as Total
from PRODUTO P, ITEMPEDIDO I
where p.PRO_CODIGO = i.IPED_PRODUTO
group By
I.IPED_PRODUTO, P.PRO_NOME
HAVING ( sum( I.IPED_QTDE) * avg( I.IPED_UNITARIO) ) >10
Order By i.IPED_PRODUTO
.