Banco de dadosSql (2)
- (CESGRANRIO 2008)
Observe as seguintes tabelas de um sistema:
Pessoa (nomePessoa, endereço)
Filme (nomeFilme, estúdio, verba)
Trabalha (nomePessoa(FK), nomeFilme(FK), atividade, salário)
Um administrador de dados deseja fazer o seguinte relatório: Todas as pessoas, os filmes nos quais já trabalharam e o total recebido por cada filme. Se uma pessoa nunca trabalhou num filme, ela deve aparecer no relatório. A atividade que a pessoa exerceu no filme (ex: ator, diretor, câmera etc.) não é importante para o relatório.
Qual consulta retorna o conjunto resposta correto?
A) SELECT P.nomePessoa, T.nomeFilme, sum(T.salário) total
FROM Pessoa P LEFT OUTER JOIN Trabalha T
ON P.nomePessoa = T.nomePessoa
GROUP BY P.nomePessoa, T.nomeFilme
B) SELECT T.nomePessoa, T.nomeFilme, sum(T.salário) total
FROM Pessoa P INNER JOIN Trabalha T
ON P.nomePessoa = T.nomePessoa
GROUP BY T.nomePessoa, T.nomeFilme
C) SELECT P.nomePessoa, T.nomeFilme, sum(T.salário) total
FROM Pessoa P LEFT OUTER JOIN Trabalha T
ON P.nomePessoa = T.nomePessoa
GROUP BY P.nomePessoa, T.nomeFilme HAVING sum(T.salário) > 0
D) SELECT P.nomePessoa, F.nomeFilme, sum(T.salário) total
FROM Pessoa P INNER JOIN Trabalha T
ON P.nomePessoa = T.nomePessoa INNER JOIN Filme F
ON F.nomeFilme = T.nomeFilme WHERE T.atividade IS NOT NULL AND T.salário > 0
GROUP BY P.nomePessoa, F.nomeFilme
E) SELECT T.nomePessoa, T.nomeFilme, sum(T.salário) total
FROM Pessoa P LEFT OUTER JOIN Trabalha T
ON P.nomePessoa = T.nomePessoa LEFT OUTER JOIN Filme F
ON F.nomeFilme = T.nomeFilme
Próximo:
EXERCÍCIOS - Exercício 209
Vamos para o Anterior: Exercício 207
Tente Este: Exercício 424
Primeiro: Exercício 1
VOLTAR ao índice: Banco de dados