You are on page 1of 15

Laboratorio de Banco de Dados

Having

Raphael de Souza, Allan Goncalves de Oliveira

IC/UFMT
Roteiro

1 Having

2 Exerccios

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)


Laboratorio de Programacao 14 / 14