29/12/2008
A cláusula HAVING foi adicionada ao SQL porque a palavra-chave WHERE não pode ser utilizada com funções agregadas.
Sintaxe SQL do HAVING
SELECT nome_coluna, funcao_agregada(nome_coluna)
FROM nome_tabela
WHERE nome_coluna operador valor
GROUP BY nome_coluna
HAVING funcao_agregada(nome_coluna) operador valor
Exemplo SQL de HAVING
Temos a seguinte tabela "Ordens":
ID_Ordem |
Data_Ordem |
Preco_Ordem |
Cliente |
1 |
12/11/2008 |
1000 |
Pedro |
2 |
23/10/2008 |
1600 |
José |
3 |
2/9/2008 |
700 |
Pedro |
4 |
3/9/2008 |
300 |
Pedro |
5 |
30/8/2008 |
2000 |
Mauro |
6 |
4/10/2008 |
100 |
José |
Agora queremos descobrir se algum dos clientes tem um total de ordens inferior a 2000.
Nós usamos o seguinte comando SQL:
SELECT Cliente, SUM(Preco_Ordem) FROM Ordens
GROUP BY Cliente
HAVING SUM(Preco_Ordem) < 2000
O resultado ficará assim:
Cliente |
SUM(Preco_Ordem) |
José |
1700 |
Agora queremos descobrir se os clientes "Pedro" ou "Mauro" tem um total de ordens maior do que 1500.
Nós adicionamos uma cláusula WHERE na instrução SQL:
SELECT Cliente, SUM(Preco_Ordem) FROM Ordens
WHERE Cliente = 'Pedro' OR Cliente = 'Mauro'
GROUP BY Cliente
HAVING SUM(Preco_Ordem) > 1500
O resultado ficará assim:
Cliente |
SUM(Preco_Ordem) |
Pedro |
2000 |
Mauro |
2000 |
Por: Fernando Segantini Cruz
Esta apresentação reflete a opinião pessoal do autor sobre o tema, podendo não refletir a posição oficial do Portal Educação.
O Portal Educação possui uma equipe focada no trabalho de curadoria de conteúdo. Artigos em diversas áreas do conhecimento são produzidos e disponibilizados para profissionais, acadêmicos e interessados em adquirir conhecimento qualificado. O departamento de Conteúdo e Comunicação leva ao leitor informações de alto nível, recebidas e publicadas de colunistas externos e internos.
UOL CURSOS TECNOLOGIA EDUCACIONAL LTDA, com sede na cidade de São Paulo, SP, na Alameda Barão de Limeira, 425, 7º andar - Santa Cecília CEP 01202-001 CNPJ: 17.543.049/0001-93