Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2025
Banco de Dados›Consultas 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 é:
ASELECT CPF Contribuinte, Valor FROM NotasFiscais WHERE Valor> 50000 ANO Data_Emissão LIKE '2024%' ORÕER BY Valor DESC;
BSELECT CPF Contribuinte FROM NotasFiscais WHERE Valor < 50000 ORDER BY Oata_Emissão ASC ;
CSELECT SUM(Valor) FROM NotasFiscais WHERE Data Emissão = 202 4 GROUP BY CPF_Contribuinte;
DSELECT INTO NotasFiscais (Valor) VALUES (>50000) WHERE Data Emissão = '2024' ;
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.
1SELECT colunas
2FROM tabela
3WHERE condição
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.