Questão nº 56

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

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, analise o script SQL de criação da view "v1".

create view v1 as
select ano, mes, salto from (
  select y.ano, y.mes, y.indice anterior,
         x.indice novo, y.indice - x.indice salto
  from ipca x, ipca y
  where
  ((x.ano = y.ano and y.mes = x.mes + 1)
     Or
   (y.ano = x.ano + 1 and y.mes = 1 and x.mes = 12))
) x

Admitindo que pode haver empates, assinale o comando SQL que emprega corretamente a view v1 para produzir o ano/mês que teve o maior salto positivo do índice em relação ao mês anterior, e o valor do salto.

Resposta comentada

Gabarito Alternativa B

Para encontrar o maior valor de uma coluna e as linhas correspondentes, é preciso primeiro descobrir qual é esse valor máximo (usando uma função agregada como MAX()) e depois usar esse valor para filtrar os dados, geralmente com uma subconsulta (uma consulta dentro de outra).

  • (A) Incorreta: A função agregada max(salto) não pode ser usada diretamente na cláusula WHERE de uma consulta sem um GROUP BY. Isso resultaria em um erro sintático na maioria dos bancos de dados.
  • (B) Correta: Esta alternativa utiliza uma subconsulta (select max(salto) from v1) para primeiro calcular o valor máximo do salto em toda a view v1. Em seguida, a consulta externa filtra a view v1 para selecionar todas as linhas onde o salto é igual a esse valor máximo encontrado pela subconsulta, atendendo ao requisito de encontrar o maior salto e permitindo empates.
  • (C) Incorreta: Esta consulta simplesmente retorna todas as colunas e linhas da view v1, sem aplicar qualquer filtro para encontrar o maior salto.
  • (D) Incorreta: Assim como na alternativa A, tenta usar a função agregada max(v1.salto) diretamente na cláusula WHERE sem um GROUP BY, o que é um erro sintático. Armadilha: A banca tenta confundir ao usar v1.salto em vez de apenas salto, mas o erro fundamental de usar MAX() no WHERE sem subconsulta ou GROUP BY permanece.
  • (E) Incorreta: Esta consulta filtra apenas os registros onde o salto é positivo, mas não identifica o maior salto positivo.

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