Um gerente executivo de um grande banco deseja estudar o inv...
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?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a letra D.
Para resolver esta questão, é importante compreender como funcionam consultas SQL e, particularmente, o uso do GROUP BY e a função de agregação SUM() em um contexto de processamento analítico em tempo real, conhecido como OLAP (On-line Analytical Processing).
O problema exige que se agreguem os valores investidos por agência, somando o valor total investido por todos os clientes em cada agência. Para isso, estamos lidando com múltiplas tabelas, cada uma representando diferentes aspectos do investimento e da estrutura do banco.
Vamos analisar cada alternativa:
A - Errada: Esta alternativa não usa a função de agregação SUM() para somar os valores investidos. Assim, ela retornaria apenas linhas individuais de investimento, sem agregar o total por agência.
B - Errada: Apesar de utilizar a função SUM(), o agrupamento está sendo feito por c.idCliente, o que não atende ao requisito de agrupar por agência. Isso resultaria em múltiplas linhas por agência, uma para cada cliente.
C - Errada: Esta alternativa possui um erro de junção ao usar c.idCliente = i.idConta. Aqui, a intenção correta seria usar c.idConta = i.idConta. Esse erro de chave leva a resultados incorretos.
D - Correta: Esta consulta soma corretamente os valores investidos usando SUM(i.valorInvestido) e agrupa os resultados por a.nomeAgencia. A junção também está correta, ligando Agencia, Conta e Investimento adequadamente.
E - Errada: Semelhante à alternativa A, esta alternativa falha ao não utilizar a função de agregação, resultando em listagens de investimentos individuais ao invés de um total agregado por agência.
No contexto de OLAP, a capacidade de agregar e resumir dados é essencial, e a alternativa D realiza isso de forma eficiente e correta.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo