Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 2 / 14 Having
Definicao Determina uma condicao de busca para um grupo
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 3 / 14 Having
Define criterios para limitar os resultados obtidos a partir do
agrupamento de registros E importante lembrar que essa clausula s o pode ser usada em parceria com GROUP BY Dentro de cada um dos grupos, a clausula HAVING pode ser usada para restringir os registros
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 4 / 14 Having
Considere a seguinte estrutura de tabela denominada FUNCIONARIO:
Coluna Tipo de dado
NOME texto SETOR texto ANO CONTRATACAO numeros inteiros SALARIO numeros reais
Raphael de Souza, Allan Goncalves de Olive ira Laboratorio de Programacao 5 / 14
Having
Dado os seguintes dados:
NOME SETOR ANO CONTRATACAO SALARI
Ana Recepcao 2000 O 900.00 Pedro Administracao 1999 2000.00 Maria Administracao 2001 1500.00 Tiago Linha de producao 2000 1700.00
Raphael de Souza, Allan Goncalves de Olive ira Laboratorio de Programacao 6 / 14
Having
Retorne a quantidade de funcionarios por cada setor desde que o
mesmo tenha mais de 1 funcionario:
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 7 / 14 Having
Retorne a quantidade de funcionarios por cada setor desde que o
mesmo tenha mais de 1 funcionario: Produzindo: SETOR count(NOME) Administracao 2
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 7 / 14 Having
Para realizar esse tipo de consulta em SQL tem-se a seguinte sintaxe:
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 8 / 14 Having
Para realizar esse tipo de consulta em SQL tem-se a seguinte sintaxe:
SELECT coluna_1 , funcao_de_agregacao (coluna_2 )
FROM <TABELA > GROUP BY coluna_1 HAVING <CONDICAO >
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 8 / 14 Having
Assim para realizar a operacao do exemplo anterior temos:
SELECT setor , COUNT(nome) FROM funcionario GROUP BY setor HAVING COUNT(nome) > 1
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 9 / 14 Having
Dado o exemplo anterior o que ira retornar do seguinte SQL
SELECT ano_contratacao , COUNT(nome) FROM funcionario GROUP BY ano_contratacao HAVING COUNT(nome) > 1
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 10 / 14 Having
Dado o exemplo anterior o que ira retornar do seguinte SQL
SELECT setor , SUM(salario) FROM funcionario GROUP BY setor HAVING SUM(salario) > 1000
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)
Laboratorio de Programacao 11 / 14 Exerccio Dado as relacoes Livro x Assunto x Editora: Livro: I Codigo I Ttulo I Editora I Assunto Assunto: I Codigo II Sigla Descricao Editora: I Codigo I Nome Faca as consultas para responder as seguintes questoes I Recuperar o nome das editoras que sao referenciados em pelo menos 2 livros, ordem decrescente c I Recuperar a descrio dos assuntos que so referenciados em pelo menos 2 livros, ordem decrescente Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT) Laboratorio de Programacao 13 / 14 Exerccio (Entregar)
Crie um conjunto de relacoes Cliente x Venda x Produto:
Faco as consultas para responder as seguintes questoes I A quantidade total de vendas por cada cliente, sendo que deve aparecer o nome do cliente, o total ordenado por aquele que comprou mais para o que comprou menos, desde que a quantidade compras seja maior do que 1 I Crie um relatorio que mostre a quantidade o total de cada produto comprado por cada cliente, desde que a quantidade de produtos comprados seja maior do que 1. Ex: Cliente1, 10, Lapis Cliente1, 5, Borrachas I Crie um relatorio que mostre a quantidade de produtos comprados por cada cliente, desde que a quantidade de produtos seja maior do que 10.
Raphael de Souza, Allan Goncalves de Olive ira (IC/UFMT)