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
.
Publicado por
Daniel Morais
Comecei na área de TI há um bom tempo (1991) com aqueles cursos de MS-DOS 6.22, WordStar, Lotus123, Dbase III Plus, etc. Adorei programar em Dbase III Plus utilizando Dbf; achei fantástico quando aprendi a programar em Clipper Summer 87 e posteriormente Clipper 5.x, que era muito estável em rede utilizando Novell NetWare. Desde então sou um fanático por TI. Hoje desenvolvo aplicações para Windows, Android, OS X e Linux utilizando Lazarus (free Pascal) .
Blogueiro (www.infocotidiano.com.br, www.aprendalazarus.com.br, www.startdb.info). Além dos meus Blogs tenho um canal no YouTube o www.youtube.com.br/infocotidiano onde tenho mais de 1 Milhão de visualizações com vídeos de dicas diversificadas que vão desde solucionar um erro de impressão, curso sobre banco de dados, até criar software multi-plataforma utilizando o Lazarus.
Ver todos os posts de Daniel Morais