Curso Firebird SQL 34 – Having

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

.