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

.


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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *