Questão nº 38

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

FGV2024Auditor Federal de Finanças e Controle - Tecnologia da Informação (Operação e Infraestrutura)Tecnologia da Informação
Gabarito: Ever comentário ↓

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


Assinale o comando SQL que produz as colunas ano, mes e indice, da tabela IPCA apresentada, ordenadas por ano/mês e precedidas por uma coluna com a numeração sequencial das linhas a partir de 1.

Resposta comentada

Gabarito Alternativa E

Para criar uma numeração sequencial baseada em ano e mês, usamos uma fórmula que converte cada par (ano, mês) em um número único e crescente. A chave é encontrar o menor ano (min(ano)) da tabela para usá-lo como base no cálculo, garantindo que a numeração comece de forma consistente.

E) Correta: Esta é a alternativa que implementa corretamente a lógica.

  • 12*(ano-(select min(ano) from ipca)) + mes: Calcula a ordem sequencial. A subconsulta (select min(ano) from ipca) obtém o menor ano de toda a tabela, que é essencial para a base do cálculo. 12 * (ano - menor_ano) + mes transforma cada par (ano, mês) em um número único e sequencial.
  • ordem: Alias (apelido) para a coluna calculada.
  • *: Seleciona todas as outras colunas (ano, mes, indice) da tabela ipca.
  • from ipca i: Seleciona os dados da tabela ipca (o i é um alias para a tabela, opcional aqui).
  • order by ano, mes: Garante que o resultado final esteja ordenado corretamente por ano e mês.

A) Incorreta: O uso de min(ano) diretamente na lista de SELECT sem uma cláusula GROUP BY e misturado com colunas não agregadas (ano, mes) é um erro de sintaxe na maioria dos sistemas de banco de dados SQL padrão. min(ano) é uma função de agregação e precisa de um GROUP BY para funcionar com colunas individuais, ou ser usada como uma subconsulta escalar para obter um único valor para toda a tabela. Armadilha da banca: Esta é a alternativa mais tentadora, pois parece intuitiva usar min(ano), mas a sintaxe está incorreta para o que se deseja (um valor escalar para cada linha).

B) Incorreta:

  • 12 x (ano-(select min(ano) from ipca)): O operador de multiplicação em SQL é *, não x. Isso causaria um erro de sintaxe.
  • A consulta não inclui * para selecionar as colunas ano, mes e indice, apenas a coluna ordem.

C) Incorreta:

  • (select min(ano)): A subconsulta está faltando a cláusula FROM, ou seja, não especifica de qual tabela deve obter o min(ano). Isso resultaria em um erro de sintaxe.

D) Incorreta:

  • 12*(ano-min(ano) + mes ordem,*: Há um erro de sintaxe na expressão. O parêntese para min(ano) não está fechado corretamente antes do + mes. Além disso, o uso de min(ano) diretamente na lista de SELECT sem GROUP BY (como na alternativa A) é incorreto.
  • order by 1,2: Embora válido para ordenar pelas primeiras duas colunas do resultado, o cálculo principal está errado.

Fonte: FGV STN 2024 Auditor Federal de Finanças e Controle - Tecnologia da Informação (Operação e Infraestrutura) (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