Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2025

Banco de DadosConsultas e Comandos em SQL
Código
fc150364
Banca
FCC
Órgão
CGE PI
Ano
2025
Cargo
Aud Gov ( )
"Uma Analista de uma Secretaria da Fazenda precisa extrair uma lista de contribuintes que emitiram notas fiscais acima de R$ 50.000 em 2024, ordenada por valor decrescente. A tabela NotasFiscais contém os campos CPF_Contribuinte , Valor, Data_Emissão (formato padrão ISO (YYYY-MM-DD)). O comando SQL que a Analista deve utilizar para isso é:
  1. ASELECT CPF Contribuinte, Valor FROM NotasFiscais WHERE Valor> 50000 ANO Data_Emissão LIKE '2024%' ORÕER BY Valor DESC;
  2. BSELECT CPF Contribuinte FROM NotasFiscais WHERE Valor < 50000 ORDER BY Oata_Emissão ASC ;
  3. CSELECT SUM(Valor) FROM NotasFiscais WHERE Data Emissão = 202 4 GROUP BY CPF_Contribuinte;
  4. DSELECT INTO NotasFiscais (Valor) VALUES (>50000) WHERE Data Emissão = '2024' ;
  5. ESELECT CPF_Contribuinte , Valor FROM NotasFiscais GROUP BY Valor WHERE Data_Emissão = ' 2024' ;
Revelar gabarito e comentário

GabaritoA — SELECT CPF Contribuinte, Valor FROM NotasFiscais WHERE Valor> 50000 ANO Data_Emissão LIKE '2024%' ORÕER BY Valor DESC;

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: filtragem, ordenação e sintaxe correta

Gabarito: letra A. A consulta correta deve selecionar o CPF do contribuinte e o valor das notas fiscais, filtrar apenas os valores acima de R$ 50.000,00 emitidos em 2024 e ordenar o resultado pelo valor em ordem decrescente — exatamente o que a alternativa A propõe, com a estrutura SELECT ... FROM ... WHERE ... ORDER BY ... DESC. As demais alternativas apresentam erros de sintaxe, lógica ou usam comandos inadequados para a consulta.

A linguagem SQL (Structured Query Language) é a ferramenta padrão para manipular e consultar dados em bancos de dados relacionais. Para resolver o problema da analista, precisamos entender a função de cada cláusula principal de uma consulta:

  • SELECT: define as colunas que serão retornadas no resultado.

  • FROM: indica a tabela de onde os dados serão lidos.

  • WHERE: filtra as linhas que atendem a uma condição (predicado).

  • ORDER BY: ordena o resultado final com base em uma ou mais colunas, em ordem crescente (ASC, padrão) ou decrescente (DESC).

A ordem lógica de execução de uma consulta é: primeiro o FROM, depois o WHERE, em seguida o SELECT e, por último, o ORDER BY. Isso significa que o filtro é aplicado antes da ordenação, o que é essencial para o problema: primeiro selecionamos apenas as notas com valor acima de R$ 50.000,00 e emitidas em 2024, e depois ordenamos essas notas pelo valor, do maior para o menor.

Um ponto importante é a filtragem por data. O campo Data_Emissão está no formato ISO (YYYY-MM-DD), então podemos usar o operador LIKE com o padrão '2024%' para capturar todas as datas que começam com o ano de 2024. Alternativamente, poderíamos usar funções de data, mas o LIKE é uma solução simples e direta para este caso.

A alternativa A é a única que combina corretamente todos os elementos: seleciona as colunas certas (CPF_Contribuinte e Valor), filtra por valor (Valor > 50000) e por ano (Data_Emissão LIKE '2024%'), e ordena de forma decrescente (ORDER BY Valor DESC). As outras alternativas falham em pelo menos um desses aspectos, seja por sintaxe inválida, lógica invertida ou uso incorreto de cláusulas.

Guarde a estrutura canônica de uma consulta com filtro e ordenação: SELECT colunas FROM tabela WHERE condição ORDER BY coluna DESC. É exatamente nessa estrutura que as alternativas se dividem: as incorretas ou quebram a sintaxe, ou invertem a lógica do filtro, ou usam cláusulas no lugar errado.

  1. 1SELECT colunas
  2. 2FROM tabela
  3. 3WHERE condição
  4. 4ORDER BY coluna DESC
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa A apresenta a consulta correta: SELECT CPF_Contribuinte, Valor FROM NotasFiscais WHERE Valor > 50000 AND Data_Emissão LIKE '2024%' ORDER BY Valor DESC;. Ela seleciona as colunas necessárias, filtra as notas com valor acima de R$ 50.000,00 e emitidas em 2024 (usando LIKE '2024%' para capturar todas as datas do ano), e ordena o resultado pelo valor em ordem decrescente (DESC). A sintaxe está correta e atende exatamente ao que a analista precisa.

Alternativa B — ❌ Incorreta

A alternativa B está incorreta por dois motivos: primeiro, o filtro Valor < 50000 é o oposto do que se pede (a analista quer notas acima de R$ 50.000,00, não abaixo). Segundo, a ordenação é feita por Data_Emissão ASC, mas o enunciado pede ordenação por valor decrescente. Além disso, a consulta não filtra pelo ano de 2024, retornando notas de qualquer data.

Alternativa C — ❌ Incorreta

A alternativa C usa SUM(Valor) para somar os valores, mas o enunciado pede uma lista de notas individuais, não um total. Além disso, a condição Data_Emissão = 2024 está incorreta: compara a data com o número 2024, o que não faz sentido, pois o campo é uma data e deveria ser comparado com uma string ou usar uma função de data. A cláusula GROUP BY CPF_Contribuinte agruparia os resultados por contribuinte, mas isso não é o que se pede — a analista quer cada nota individual, não uma soma por contribuinte.

Alternativa D — ❌ Incorreta

A alternativa D está completamente errada. SELECT INTO é usado para criar uma nova tabela a partir do resultado de uma consulta, não para filtrar dados. A sintaxe VALUES (>50000) é inválida — VALUES é usado com INSERT, não com SELECT. Além disso, a condição WHERE Data_Emissão = '2024' compara a data com a string '2024', o que não capturaria todas as datas de 2024 (apenas a data exata '2024', que não existe). O comando não faz sentido para a consulta solicitada.

Alternativa E — ❌ Incorreta

A alternativa E está incorreta porque a ordem das cláusulas está errada: GROUP BY Valor WHERE Data_Emissão = '2024' coloca o WHERE depois do GROUP BY, o que é inválido em SQL. A ordem correta é WHERE antes de GROUP BY. Além disso, agrupar por Valor não faz sentido para listar notas individuais — o GROUP BY é usado com funções de agregação, e aqui não há nenhuma. A consulta também não filtra por valor acima de R$ 50.000,00, como pede o enunciado.

NÃO CAIA NESSA!

A banca explora a confusão entre a ordem das cláusulas e a lógica do filtro. Na alternativa E, o WHERE aparece depois do GROUP BY, o que é um erro clássico de sintaxe. Na alternativa B, o filtro Valor < 50000 inverte a condição pedida. Fique atento: a ordem correta é SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY, e o filtro de valor deve ser > (maior que), não < (menor que).

PEGA ESSA DICA!

Para questões de SQL, monte a consulta mentalmente antes de olhar as alternativas: 1) quais colunas preciso? 2) qual tabela? 3) qual condição de filtro? 4) preciso ordenar? Depois, compare com cada alternativa e elimine as que tiverem sintaxe inválida ou lógica invertida. Essa técnica evita cair em distratores que parecem plausíveis.

Gabarito: letra A

Link permanente: /questoes/fc150364