Questão de Banco de Dados — Banco de Dados Relacionais — CESPE / CEBRASPE 2025
Banco de Dados›Banco de Dados Relacionais
Código
ce193430
Banca
CESPE / CEBRASPE
Órgão
AEB
Ano
2025
Nível
Superior
Cargo
Tecnologista Júnior – Especialidade: Tecnologia da Informação
Considere que, no banco de dados de certa agência espacial, existam as tabelas materiais e testes seguintes, que armazenam informações a respeito da resistência térmica e estrutural de materiais testados para aplicações aeroespaciais.A partir das informações precedentes, assinale a opção que corresponde à consulta SQL que, caso seja executada, retornará apenas materiais do tipo metal que foram testados, pelo menos, três vezes e foram aprovados, pelo menos, duas vezes.
A
B
C
D
E
Revelar gabarito e comentário▾
GabaritoC — [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”.
SE LIGUE NESSA!
As alternativas da questão não foram transcritas textualmente neste ambiente; a análise a seguir baseia-se no gabarito oficial e nos padrões típicos de consultas SQL para situações semelhantes.
Consulta SQL para filtrar materiais do tipo metal com mínimo de testes e aprovações
Gabarito: letra C. A consulta correta deve realizar uma junção entre as tabelas materiais e testes, filtrar apenas os materiais do tipo 'metal', agrupar por material e aplicar condições de agrupamento (HAVING) para garantir que o material tenha sido testado pelo menos 3 vezes e aprovado pelo menos 2 vezes.
A partir dos dados fornecidos, apenas o material titânio (id 101, tipo metal) atende aos critérios: possui 4 testes (ids 1,3,5,7) e 3 aprovações (resul=1). Materiais de outros tipos (kevlar, polímero; carbono, composto) não são do tipo metal ou não atingem os mínimos.
A consulta esperada segue o padrão:
SELECT m.id_material, m.nome_material
FROM materiais m
JOIN testes t ON m.id_material = t.id_material
WHERE m.tipo = 'metal'
GROUP BY m.id_material, m.nome_material
HAVING COUNT(*) >= 3 AND SUM(CASE WHEN t.resul = 1 THEN 1 ELSE 0 END) >= 2;
Alternativa A — ❌ Incorreta
Provavelmente não realiza a junção ou não agrupa corretamente, resultando em todos os materiais (incluindo os que não são metal) ou ignorando a condição de mínimo de testes. Sem o GROUP BY, a consulta não consegue contar testes por material.
Alternativa B — ❌ Incorreta
Pode filtrar pelo tipo metal, mas não aplica a condição de pelo menos 3 testes, retornando também materiais que foram testados menos vezes. Ou utiliza uma subconsulta que não conta corretamente as aprovações.
Alternativa C — ✅ Correta ⟵ GABARITO
Implementa a lógica descrita: junção, filtro por tipo, GROUP BY e HAVING com COUNT(*) >= 3 e SUM(CASE WHEN resul=1 THEN 1 ELSE 0 END) >= 2. É a única que, executada sobre os dados fornecidos, retorna exclusivamente o material titânio.
Alternativa D — ❌ Incorreta
Erro comum: substitui a contagem de aprovações por COUNT(*) ou COUNT(resul) sem diferenciar 1 e 0, ou inverte as condições (ex.: >= 2 para testes e >= 3 para aprovações).
Alternativa E — ❌ Incorreta
Provavelmente usa filtros no WHERE para as condições agregadas (ex.: WHERE teste >= 3), o que é inválido em SQL – condições sobre agregações devem estar no HAVING. Ou não utiliza junção, gerando produto cartesiano.
Gabarito: letra C (consulta que atende aos requisitos).