Questão de Banco de Dados — Banco de Dados Relacionais — FCC 2026
Banco de Dados›Banco de Dados Relacionais
Código
fc077598
Banca
FCC
Órgão
SEFAZ-SP
Ano
2026
Nível
Superior
Cargo
Auditor Fiscal da Receita Estadual - AFRE - Tecnologia da Informação e Comunicação - Conhecimentos Especificos (P3)
Uma base tributaria de uma SEFAZ possui duas tabelas:contribuinte (id, cpf_cnpj, nome, situacao) debitos (id, contribuinte_id, valor, tipo_tributo, data_vencimento)A equipe de Banco de Dados deseja listar contribuintes ativos, exibindo o nome e o valor total de débitos vencidos, considerando apenas tributos do tipo IPTU (isto €, data vencimento anterior à data atual). Considerando consultas escritas em um SGBD em que não ha mais de um contribuinte com o mesmo nome na base de dados e em que CURRENT_DATE retorna a data atual, a consulta SQL que atende ao requisito é:
ASELECT c.nome, SUM(d.valor) FROM contribuinte c JOIN debitos d ON c.id = d.id WHERE c.situacao = 'ATIVO' AND d.tipo_tributo = 'IPTU' AND d.data_vencimento < CURRENT DATE GROUP BY c.nome;
BSELECT nome, SUM(valor) FROM contribuinte c LEFT JOIN debitos d ON c.id = d.contribuinte_id WHERE situacao = 'ATIVO' GROUP BY nome HAVING tipo_tributo = 'IPTU';
CSELECT c.nome, SUM(d.valor) AS total_debitos FROM contribuinte c JOIN debitos d ON c.id = d.contribuinte_id WHERE c.situacao = 'ATIVO' AND d.tipo_tributo = 'IPTU' AND d.data_vencimento < CURRENT DATE GROUP BY c.nome;
DSELECT c.nome, valor FROM contribuinte c JOIN debitos d ON c.id = d.contribuinte_id WHERE c.situacao = 'ATIVO' AND d.data_vencimento < CURRENT DATE;
ESELECT c.nome, SUM(d.valor) FROM contribuinte c WHERE c.situacac = 'ATIVO' AND d.tipo_tributo = 'IPTU' GROUP BY c.nome;
Revelar gabarito e comentário▾
GabaritoC — SELECT c.nome, SUM(d.valor) AS total_debitos FROM contribuinte c JOIN debitos d ON c.id = d.contribuinte_id WHERE c.situacao = 'ATIVO' AND d.tipo_tributo = 'IPTU' AND d.data_vencimento < CURRENT DATE GROUP BY c.nome;
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”.
Consulta SQL: listar contribuintes com débitos vencidos
Gabarito: letra C. A consulta deve: (1) juntar as tabelas contribuinte e debitos pela chave estrangeira contribuinte_id; (2) filtrar contribuintes ativos (situacao = 'ATIVO'); (3) filtrar débitos do tipo IPTU e com data de vencimento anterior à data atual (data_vencimento < CURRENT_DATE); (4) agrupar por nome do contribuinte (pois não há homônimos) e somar os valores dos débitos. A alternativa C é a única que atende a todos esses critérios com sintaxe correta.
Critério
Alternativa A
Alternativa B
Alternativa C (Gabarito)
Alternativa D
Alternativa E
JOIN correto (c.id = d.contribuinte_id)
❌ (usa c.id = d.id)
✅ (LEFT JOIN, mas desnecessário)
✅
✅
❌ (sem JOIN)
Filtro situacao = 'ATIVO'
✅
✅
✅
✅
❌ (erro de digitação 'situacac')
Filtro tipo_tributo = 'IPTU'
✅
❌ (no HAVING, inválido)
✅
❌ (ausente)
✅ (mas sem JOIN)
Filtro data_vencimento < CURRENT_DATE
❌ (usa CURRENT DATE com espaço)
❌ (ausente)
✅
✅
❌ (ausente)
Agregação SUM(valor) com GROUP BY nome
✅
✅ (mas sem filtro adequado)
✅
❌ (sem SUM)
✅ (mas sem JOIN)
Sintaxe SQL válida
❌
❌
✅
❌
❌
Alternativa A — ❌ Incorreta
Usa a condição de JOIN errada: c.id = d.id. A tabela debitos possui a coluna contribuinte_id como chave estrangeira, não id. Além disso, escreve CURRENT DATE (espaço) em vez de CURRENT_DATE (sem espaço), o que é inválido.
Alternativa B — ❌ Incorreta
Emprega LEFT JOIN (desnecessário, pois só interessam contribuintes com débitos), não filtra por data_vencimento e tenta usar a cláusula HAVING tipo_tributo = 'IPTU'. A cláusula HAVING serve para filtrar grupos após a agregação, mas tipo_tributo não está no GROUP BY nem é uma função de agregação, gerando erro.
Alternativa C — ✅ Correta ⟵ GABARITO
Realiza INNER JOIN corretamente (c.id = d.contribuinte_id), aplica todos os filtros no WHERE, soma os valores com SUM(d.valor) e agrupa por c.nome. A sintaxe está conforme o padrão SQL (considerando que CURRENT_DATE é a função para data atual).
Alternativa D — ❌ Incorreta
Falta a função de agregação SUM (exibe valores individuais) e não filtra por tipo_tributo = 'IPTU', listando débitos de todos os tipos.
Alternativa E — ❌ Incorreta
Não faz o JOIN entre as tabelas (tenta acessar d.tipo_tributo sem a tabela debitos na cláusula FROM) e contém erro de digitação (situacac).
NÃO CAIA NESSA!
A banca explora erros comuns: condição de JOIN com coluna errada (A), uso indevido de HAVING para filtrar linhas (B), e ausência de JOIN (E). A alternativa D parece mais completa, mas falta agregação e filtro de tipo. Fique atento à cláusula ON e ao papel do WHERE vs HAVING.