Questão nº 47

Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2024 (nº 47)

CESGRANRIO2024Técnico Científico - Área de Formação: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Dver comentário ↓

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?

Resposta comentada

Gabarito Alternativa D

Conceito-chave: Para somar valores agrupados por uma categoria (no caso, agência), você precisa usar a função de agregação SUM() e a cláusula GROUP BY na coluna da categoria. Sem o SUM(), você lista valores individuais, não o total.

  • (A) Incorreta: Usa i.valorInvestido sem SUM(), então retorna uma linha para cada investimento individual, não o total por agência.
  • (B) Incorreta: Agrupa por c.idCliente (cliente), não por a.nomeAgencia (agência), quebrando o requisito do relatório.
  • (C) Incorreta: O JOIN entre Conta e Investimento usa c.idCliente = i.idConta, uma condição errada (compara campos de naturezas diferentes), gerando dados incorretos ou vazios.
  • (D) Correta: Aplica SUM(i.valorInvestido) para somar todos os valores e GROUP BY a.nomeAgencia para agregar por agência, com o JOIN correto entre Conta.idConta e Investimento.idConta.
  • (E) Incorreta: Igual à (A), falta o SUM(), então não agrega os valores; apenas lista investimentos individuais.

Armadilha da banca (no distrator A): A alternativa (A) parece correta porque tem o JOIN certo e o GROUP BY certo, mas omite o SUM(). Ela usa i.valorInvestido direto no SELECT, o que faz o MySQL retornar uma linha por investimento, mesmo com o GROUP BY (em muitos modos, isso gera valores arbitrários ou erro). A pegadinha é confundir "listar" com "somar" — o enunciado pede valor total investido, que exige agregação.

Fonte: CESGRANRIO BASA 01/2024 Técnico Científico - Área de Formação: Tecnologia da Informação (Caderno Prova B). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho