Questão de Banco de Dados — SQL — FGV 2024
- 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ã
- A

- B

- C

- D

- E






GabaritoB — [imagem]
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.
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.
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).
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.
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.
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.
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