Auditor Federal de Finanças e Controle - Área de Tecnologia da Informação (Transformação Digital) - manhã
ATENÇÃO: use a tabela relacional IPCA a seguir para responder
às quatro próximas questões.
A instância da tabela contém os valores do índice IPCA para todos
os meses dos anos de 2001 até 2023. Os valores pontilhados
representam a continuidade mensal da série. Todas as colunas são
numéricas, e não aceitam valores nulos.
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.
A
B
C
D
E
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.