duvidas com o comando Having

29/12/2004

0

Olá amigos, gostaria que alguém me explicasse como uso o comando Having, pois tenho dúvidas.
Li em apostilas que o certo seria usa-lo ao invéz do Where, quando, se usa o group by. Mas posso usar o where juntamento com o Group By? terei algum erro no resultado?
Desde já agradeço. :D


T_fazionato

T_fazionato

Responder

Posts

29/12/2004

Gandalf.nho

O HAVING é usado para filtrar a query usando o campo agregado como critério e pode ser usado com WHERE sem problemas. Ex:

SELECT nome, COUNT(codigo)
FROM nome_tabela
WHERE nome = ´TESTE´
GROUP BY nome
HAVING COUNT(codigo) > 1


Responder

05/01/2005

Dberlese

Vou passar um exemplo onde é utilizdo uma subquery em cláusula HAVING
A utilização é realizada da mesma forma que na cláusula WHERE. A subquery será executada primeiro e o resultado da busca servirá de base para filtrar as linhas do group by. Veja no exemplo:

select codigo_gravadora, min(preco_venda)
from cd
group by codigo_gravadora
having min(preco_venda) >
(select preco_venda from cd where codigo_cd = 6);

codigo_gravadora min(preco_venda)
1 15
3 10,5

Veja que o preço de venda do Cd de código 6 é R$ 9,50. esse é o valor utilizado para que somente as gravadoras que possuam precos minimos superiores a este apareca na busca. Veja outro exemplo.

select codigo_gravadora, max(preco_venda)
from cd a
group b codigo_gravadora
having max(preco_venda) > (select avg(preco_venda)
from cd
where codigo_gravadora = a.codigo_gravadora);

codigo_gravadora max(preco_venda)
2 13,5
3 13

A diferenca entre esse comando e o anterior é que estamos buscando dados da primeira busca (a.codigo_gravadora no segundo select) para realizar a busca do segundo select. O correto é que seja comparada a media de preco dos cds da gravadora da primeira busca (por esse motivo, utilizamos o apelido na clausula from do primeiro select). Somente as gravadoras que tiverem cds com preco de venda superiores a media aparecem no resultado. note que a gravadora de codigo 1 nao aparece, pois so ha um unico cd dessa gravdora. logo seu preco maximo nao pode ser superior a media de preço


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar