Questão FC296066
Nesse contexto, considerando-se o uso do banco de dados MySQL, que consulta SQL fornece corretamente os dados para a tela inicial desejada?
Questões sem classificação de assunto (TI - Banco de Dados)
CESGRANRIO · 2024
Um gerente executivo de um grande banco deseja estudar o investimento feito pelos clientes pessoas físicas, considerando o valor investido em reais, com detalhamento por tipo de investimento e agência. Para isso, encomendou um painel OLAP, no qual a tela inicial deve ser o valor, em reais, da soma do investimento de todos os clientes de cada agência, listados por agência, agregando todos os tipos de investimento, na forma de um relatório em tela com duas colunas: Nome da Agência e Valor Total Investido.
Considere que as seguintes visões estão disponíveis:
Agencia(idAgencia,nomeAgencia)
Cliente(idCliente,nomeCliente)
Conta(idCliente,idAgencia,idConta)
TipoInvestimento(idTipoInvestimento,nomeInvestimento)
Investimento(idConta,idTipoInvestimento,valorInvestido)
Nesse contexto, considerando-se o uso do banco de dados MySQL, que consulta SQL fornece corretamente os dados para a tela inicial desejada?
- SELECT a.nomeAgencia AS Agencia, i.valorInvestido AS ValorTotalInvestido FROM Agencia a JOIN Conta c ON a.idAgencia = c.idAgencia JOIN Investimento i ON c.idConta = i.idConta GROUP BY a.nomeAgencia;
- SELECT a.nomeAgencia AS Agencia, SUM(i.valorInvestido) AS ValorTotalInvestido FROM Agencia a JOIN Conta c ON a.idAgencia = c.idAgencia JOIN Investimento i ON c.idConta = i.idConta GROUP BY c.idCliente;
- SELECT a.nomeAgencia AS Agencia, SUM(i.valorInvestido) AS ValorTotalInvestido FROM Agencia a JOIN Conta c ON a.idAgencia = c.idAgencia JOIN Investimento i ON c.idCliente = i.idConta GROUP BY a.nomeAgencia;
- SELECT a.nomeAgencia AS Agencia, SUM(i.valorInvestido) AS ValorTotalInvestido FROM Agencia a JOIN Conta c ON a.idAgencia = c.idAgencia JOIN Investimento i ON c.idConta = i.idConta GROUP BY a.nomeAgencia;
- SELECT a.nomeAgencia AS Agencia, i.valorInvestido AS ValorTotalInvestido FROM Agencia a JOIN Conta c ON a.idAgencia = c.idAgencia JOIN Investimento i ON c.idConta = i.idConta GROUP BY a.nomeAgencia;
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
A consulta usa corretamente as junções entre as tabelas relevantes: Agencia → Conta → Investimento, ligadas por ON a.idAgencia = c.idAgencia e ON c.idConta = i.idConta. Isso garante que cada investimento seja associado à sua agência.
O uso de SUM(i.valorInvestido) realiza a agregação desejada: \( \text{ValorTotalInvestido} = \sum i.valorInvestido \). Como não há agrupamento por idTipoInvestimento, a soma agrega todos os tipos de investimento por agência, atendendo ao requisito.
O GROUP BY a.nomeAgencia produz uma linha por agência com duas colunas: Agencia (apelido para a.nomeAgencia) e ValorTotalInvestido (apelido para a soma). Os aliases tornam o relatório em tela exatamente no formato solicitado.
Conteúdo do catálogo FC Concursos · Atualizado em