Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2024

Banco de DadosSQL
Código
fg086783
Banca
FGV
Órgão
MF
Ano
2024
Nível
Superior
Cargo
Auditor Federal de Finanças e Controle - Área de Tecnologia da Informação (Transformação Digital) - manhã
No contexto da tabela IPCA apresentada, assinale o comando SQL que produz, corretamente, para cada ano, o mês com o maior índice, ou meses, pois pode haver empate entre os índices de dois ou mais meses num mesmo ano.
  1. AImagem associada para resolução da questão
  2. BImagem associada para resolução da questão
  3. CImagem associada para resolução da questão
  4. DImagem associada para resolução da questão
  5. EImagem associada para resolução da questão
Revelar gabarito e comentário

GabaritoB — [imagem]

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Consultas SQL com Subconsultas Correlacionadas

Gabarito: letra B. O comando correto utiliza a cláusula NOT EXISTS para filtrar as linhas da tabela ipca que não possuem, no mesmo ano, nenhum outro registro com um índice superior ao atual. Essa lógica identifica, para cada ano, o registro (ou registros, em caso de empate) que detém o valor máximo do índice, pois, se não existe um valor maior, o valor atual é necessariamente o maior.

Alternativa A — ❌ Incorreta

Utiliza EXISTS em vez de NOT EXISTS. Isso retornaria todos os registros que possuem pelo menos um outro mês no mesmo ano com índice maior, ou seja, retornaria todos os meses que {{não}} são o máximo, o oposto do solicitado.

Alternativa B — ✅ Correta ⟵ GABARITO

A estrutura NOT EXISTS com a condição x.indice > ipca.indice dentro da subconsulta correlacionada é a forma clássica de selecionar o valor máximo de um grupo sem utilizar funções de agregação como MAX(), permitindo inclusive a listagem de múltiplos registros em caso de empate (se dois meses tiverem o mesmo valor máximo, nenhum deles terá um índice maior que o outro, logo ambos serão retornados).

Alternativa C — ❌ Incorreta

A condição x.ano >= ipca.ano na subconsulta altera o escopo da comparação, expandindo-a para anos futuros, o que descaracteriza a busca pelo maior índice dentro de cada ano específico.

Alternativa D — ❌ Incorreta

O uso de SELECT * na subconsulta e a tentativa de agrupar por mês dentro da subconsulta correlacionada não estabelecem a lógica de comparação necessária para identificar o valor máximo anual, além de apresentar erros de sintaxe lógica para o objetivo proposto.

Alternativa E — ❌ Incorreta

O operador OR na cláusula WHERE da subconsulta invalida a lógica de restrição, pois faria com que a subconsulta retornasse verdadeiro para quase todos os registros, falhando em filtrar apenas os meses de índice máximo.

PEGA ESSA DICA!

Para encontrar o valor máximo de um grupo sem usar GROUP BY ou MAX(), a técnica de NOT EXISTS comparando o valor atual com todos os outros do mesmo grupo é extremamente eficiente e comum em provas de SQL. Lembre-se: se não existe ninguém maior que eu, então eu sou o maior.

Link permanente: /questoes/fg086783