Пtitulo ( Ϭmatricula=100 (FILMES * ALUGUEL) )

Propaganda
Laboratório de Banco de Dados
Prof. Luiz Vivacqua
Gabarito da Lista de exercícios para A1
Considere o seguinte banco de dados com informações de uma locadora de vídeos
com lojas em diversos bairros:
filmes (codigo, titulo, duração)
clientes (matricula, nome, telefone, bairro, saldo)
aluguel (codigo, matricula, data_aluguel)
Responda em álgebra relacional:
a) Quais são os títulos alugados pelo cliente de matricula 100
Пtitulo ( Ϭmatricula=100 (FILMES * ALUGUEL) )
b) Quais os títulos que nunca foram alugados
R1 ← Пcodigo (FILMES)
R2 ← Пcodigo (ALUGUEL)
Resultado ← Пtitulo (FILMES * (R1-R2))
c)Quais os nomes dos clientes com saldo negativo em Copacabana
Пnome ( Ϭ saldo < 0 ^ bairro= ‘copcabana’ ( CLIENTES) )
d) Quais títulos foram alugados por todos os clientes
R1 ← ПMATRICULA (CLIENTES)
R2 ← ПCODIGO, MATRICULA (ALUGUEL)
R3 ← R2 ÷ R1
Resultado ← ПTITULO (FILMES * R3)
Responda em SQL:
a) Quais os títulos alugados pelo cliente de matricula 100
SELECT TITULO FROM FILMES F INNER JOIN ALUGUEL A
ON F.CODIGO = A.CODIGO
WHERE MATRICULA = 100;
b) Qual o nome dos clientes que alugaram o filme “Gladiador”
SELECT C.NOME
FROM CLIENTES C, ALUGUEL A, FILMES F
WHERE C.MATRICULA = A.MATRICULA
AND A.CODIGO = F.CODIGO
AND F.TITULO = ‘GLADIADOR’;
c)
Quais os títulos que nunca foram alugados
SELECT TITULO
FROM FILME
WHERE CODIGO NOT IN(SELECT CODIGO FROM ALUGUEL);
d)
Quantos alugueis foram feitos por cada bairro
SELECT BAIRRO, COUNT(*)
FROM CLIENTE C INNER JOIN ALUGUEL A ON C.MATRICULA = A.MATRICULA
GROUP BY BAIRRO;
e) Qual o filme mais alugado em Copacabana
SELECT F.TITULO
FROM FILMES F,
( SELECT CODIGO, COUNT(*) AS CONTAGEM
FROM ALUGUEL A, CLIENTE C
WHERE A.MATRICULA = C.MATRICULA AND C.BAIRRO = ‘COPACABANA’
GROUP BY CODIGO) X
WHERE F.CODIGO = X.CODIGO
AND X.CONTAGEM = ( SELECT MAX(Y.CONTA)
FROM ( SELECT COUNT(*) AS CONTA
FROM ALUGUEL AA, CLIENTE CA
WHERE AA.MATRICULA = CC.MATRICULA
AND CC.BAIRRO = ‘COPACABANA’
GROUP BY CODIGO ) Y
);
f) Obter, de acordo com o número de alugueis realizados para cada filme, a taxa de
procura segundo a escala abaixo:
menos de 20 alugueis - “POUCA PROCURA”
de 20 a 40 alugueis - “MEDIA PROCURA”
mais de 40 alugueis - “ALTA PROCURA”
SELECT TITULO,
CASE
WHEN COUNT(*) < 20 THEN ‘POUCA PROCURA’
WHEN COUNT(*) >=20 AND COUNT(*) <= 40 THEN ‘MEDIA PROCURA’
WHEN COUNT(*) > 40 THEN ‘ALTA PROCURA’
END
FROM FILMES F , ALUGUEL A
WHERE F.CODIGO = A.CODIGO
GROUP BY TITULO
Download