Questão nº 57

Questão de Tecnologia da Informação · FGV STN 2024 (nº 57)

FGV2024Auditor Federal de Finanças e Controle - Tecnologia da Informação (Transformação Digital)Tecnologia da Informação
Gabarito: Bver comentário ↓

ATENÇÃO: use a tabela relacional IPCA a seguir para responder às quatro próximas questões.

Tabela IPCA

Figura da questão de Tecnologia da Informação

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.

Resposta comentada

Gabarito Alternativa B

Uma subconsulta correlacionada é uma consulta interna que depende de valores da consulta externa para ser executada. Ela é processada uma vez para cada linha da consulta externa, permitindo comparações linha a linha, como encontrar o maior ou menor valor em um grupo.

(A) Incorreta: Esta consulta usa `EXISTS` com a condição `x.indice > ipca.indice`. Isso significa que ela seleciona as linhas da tabela `ipca` para as quais existe outra linha no mesmo ano com um índice maior. Ou seja, ela retorna todas as linhas que não são o maior índice, o oposto do que se pede. O `GROUP BY ano` dentro do `EXISTS` é redundante e não altera o comportamento fundamental do `EXISTS` neste contexto.
(B) Correta: Esta é a forma padrão de encontrar o valor máximo (ou linhas com o valor máximo) por grupo usando uma subconsulta correlacionada com `NOT EXISTS`. Para cada linha da tabela `ipca` (a consulta externa), a subconsulta verifica se não existe nenhuma outra linha (`x`) no mesmo ano (`x.ano = ipca.ano`) cujo índice seja maior (`x.indice > ipca.indice`) que o índice da linha atual. Se tal linha `x` não existe, significa que o índice da linha atual é o maior (ou um dos maiores, em caso de empate) para aquele ano.
(C) Incorreta: A condição `x.ano >= ipca.ano` faz com que a comparação não seja restrita ao mesmo ano, e a condição `x.indice < ipca.indice` dentro do `NOT EXISTS` faria com que a consulta retornasse os meses com o menor índice (ou um dos menores), e não o maior, além de considerar anos futuros.
(D) Incorreta: A condição `x.indice = ipca.indice` dentro do `EXISTS` fará com que a subconsulta retorne verdadeiro para quase todas as linhas, pois uma linha sempre tem um índice igual a si mesma. Isso não ajuda a identificar o maior índice. O `GROUP BY mes` dentro do `EXISTS` também é irrelevante para a lógica de `EXISTS`.
(E) Incorreta: A condição `x.ano = ipca.ano OR x.indice > ipca.indice` é muito abrangente. O `OR` faz com que a subconsulta retorne verdadeiro se qualquer uma das condições for atendida. Isso significa que, para uma linha `ipca`, se houver outra linha no mesmo ano OU se houver qualquer linha na tabela com um índice maior, o `EXISTS` será verdadeiro. Isso resultaria na seleção de quase todas as linhas da tabela, e não apenas os maiores índices por ano.

Fonte: FGV STN 2024 Auditor Federal de Finanças e Controle - Tecnologia da Informação (Transformação Digital) (Caderno Tipo 1). 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