Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024

Banco de DadosSQL
Código
ce190750
Banca
CESPE / CEBRASPE
Órgão
TSE
Ano
2024
Nível
Médio
Cargo
Técnico Judiciário – Área: Apoio Especializado – Especialidade: Programação de Sistemas
Em determinada faculdade, para controlar os dados das monitorias prestadas por alunos a seus colegas, foram criadas as tabelas Aluno, Disciplina e Monitoria por meio dos scripts SQL a seguir. Captura_de tela 2024-12-17 090918.png 501×574 A partir dessas informações, julgue o próximo item. O comando SQL a seguir permite listar o nome das disciplinas que estão sendo apoiadas pela Monitoria e a respectiva quantidade de alunos atendidos em cada disciplina.Captura_de tela 2024-12-17 091118.png 461×126
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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 – Consulta com JOIN e agregação

Gabarito: Certo. O comando SQL apresentado está correto, pois utiliza INNER JOIN para combinar as tabelas Monitoria e Disciplina, seleciona o nome da disciplina e conta os registros de monitoria agrupados por disciplina, retornando exatamente o que o enunciado pede: o nome das disciplinas apoiadas e a quantidade de alunos atendidos em cada uma.

Para entender por que o comando está correto, é preciso decompor a consulta em suas partes. O SELECT projeta as colunas desejadas: d.nome (nome da disciplina) e COUNT(m.id) (quantidade de monitorias, que corresponde ao número de alunos atendidos). A cláusula FROM indica a tabela base, Monitoria m, e o INNER JOIN Disciplina d ON m.disciplina_id = d.id combina as linhas das duas tabelas onde a chave estrangeira disciplina_id na tabela Monitoria corresponde à chave primária id na tabela Disciplina. Por fim, o GROUP BY d.nome agrupa os resultados por disciplina, permitindo que a função de agregação COUNT calcule a quantidade de monitorias (e, portanto, de alunos atendidos) para cada grupo.

O INNER JOIN é a operação central aqui. Ele retorna apenas as linhas que têm correspondência em ambas as tabelas. No contexto do problema, isso significa que apenas as disciplinas que possuem pelo menos uma monitoria registrada aparecerão no resultado. Disciplinas sem monitoria não terão correspondência na tabela Monitoria e, portanto, serão excluídas do resultado. Isso está alinhado com o enunciado, que pede "disciplinas que estão sendo apoiadas pela Monitoria".

A função COUNT(m.id) conta o número de registros na tabela Monitoria para cada grupo de disciplina. Como cada registro de monitoria representa um aluno atendido (presumindo que cada monitoria atende um aluno), a contagem fornece exatamente a "quantidade de alunos atendidos em cada disciplina". O GROUP BY d.nome é essencial para que a contagem seja feita por disciplina, e não sobre o total geral.

A pegadinha que a banca poderia explorar é a confusão entre INNER JOIN e LEFT JOIN. Se o comando usasse LEFT JOIN, disciplinas sem monitoria também apareceriam, com contagem zero. No entanto, o comando usa INNER JOIN, que é o correto para listar apenas disciplinas com monitoria. Outra possível pegadinha seria a ausência do GROUP BY, o que resultaria em um erro de sintaxe ou em uma contagem geral, não por disciplina.

Critério

INNER JOIN (comando do item)

LEFT JOIN (alternativa hipotética)

Disciplinas sem monitoria

Excluídas do resultado

Incluídas com contagem 0

Quantidade de alunos atendidos

Contagem correta apenas das monitorias existentes

Contagem correta, mas inclui zeros para disciplinas sem apoio

Adequação ao enunciado

✅ Lista apenas disciplinas apoiadas

❌ Listaria disciplinas não apoiadas, contrariando o pedido

Uso de GROUP BY

Necessário e presente

Necessário e presente

Item — ✅ CERTO

O comando SQL está correto. Ele usa INNER JOIN para combinar as tabelas Monitoria e Disciplina, seleciona o nome da disciplina e conta os registros de monitoria agrupados por disciplina. Isso retorna exatamente o que o enunciado pede: o nome das disciplinas apoiadas e a quantidade de alunos atendidos em cada uma.

Gabarito: Certo

Link permanente: /questoes/ce190750