Questão de Banco de Dados — Banco de Dados Relacionais — CESPE / CEBRASPE 2026
Banco de Dados›Banco de Dados Relacionais
Código
ce227874
Banca
CESPE / CEBRASPE
Órgão
SEFAZ-PR
Ano
2026
Nível
Médio
Cargo
Agente Fazendário Estadual - Função: Profissional de Tecnologia da Informação
Em certa secretaria de fazenda, as tabelas contribuinte e pagamento armazenam, respectivamente, informações cadastrais e registros de pagamentos realizados pelos contribuintes, da seguinte forma.A administração tributária deve identificar pagamentos cujos valores estejam abaixo da média individual dos pagamentos de cada contribuinte, visando à detecção de possíveis inconsistências ou tentativas de fraude.Considerando essa situação hipotética, assinale a opção em que é apresentada a instrução SQL por meio da qual a operação visada pela administração tributária será corretamente realizada.
A
B
C
D
E
Revelar gabarito e comentário▾
GabaritoD — [imagem]
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”.
SQL – Subconsulta Correlacionada e Função de Janela
SE LIGUE NESSA!
As alternativas com as instruções SQL não foram transcritas no contexto disponível. A análise abaixo explica o conceito da consulta correta, conforme o gabarito oficial (alternativa D).
Gabarito: letra D. A consulta deve selecionar pagamentos cujo valor seja inferior à média individual de cada contribuinte. Isso exige uma subconsulta correlacionada ou o uso de função de janela AVG() OVER (PARTITION BY id_contribuinte).
A tabela pagamento possui os campos id_contribuinte e valor. Para cada pagamento, é necessário comparar seu valor com a média dos valores de pagamentos do mesmo contribuinte. A média por contribuinte é uma agregação que deve ser computada por grupo, mas sem agrupar o resultado final (queremos cada linha individual).
A solução clássica é uma subconsulta correlacionada:
SELECT *
FROM pagamento p
WHERE p.valor < (SELECT AVG(valor)
FROM pagamento
WHERE id_contribuinte = p.id_contribuinte);
Outra abordagem, mais eficiente e elegante em SGBDs modernos, é usar a função de janela AVG() com PARTITION BY:
SELECT *
FROM (
SELECT *, AVG(valor) OVER (PARTITION BY id_contribuinte) AS media_contribuinte
FROM pagamento
) t
WHERE valor < media_contribuinte;
A alternativa D (gabarito) corresponde a uma dessas duas formas, provavelmente a subconsulta correlacionada, que é a mais tradicional em questões de concurso.
1Agrupar por contribuinte
2Calcular média de cada grupo
3Comparar cada pagamento com sua média
4Filtrar os abaixo da média
LEVEL · soulevel.com.br
NÃO CAIA NESSA!
A banca costuma incluir alternativas que calculam a média geral de todos os pagamentos (sem agrupar por contribuinte) ou que usam GROUP BY e HAVING de forma incorreta. Lembre-se: a condição é por contribuinte, não global.
PEGA ESSA DICA!
Em questões SQL que pedem "abaixo da média de cada grupo", o padrão é subconsulta correlacionada ou OVER (PARTITION BY). Pratique esses dois padrões para reconhecê-los rapidamente na prova.
Como não temos o texto das demais alternativas, não é possível analisar individualmente cada erro. Contudo, o gabarito oficial aponta a letra D como correta, e as demais provavelmente incorrem em erros comuns como mencionado.