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. 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.
CCerto
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.