SELECT categoria.nome,
COUNT (aluno_curso.aluno_id) numero_alunos
FROM categoria
JOIN curso ON categoria.id = curso.categoria_id
JOIN aluno_curso ON curso.id = aluno_curso.curso_id
GROUP BY categoria.nome
ORDER BY numero_alunos DESC
LIMIT 1
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
SELECT categoria.nome,
COUNT (aluno_curso.aluno_id) numero_alunos
FROM categoria
JOIN curso ON categoria.id = curso.categoria_id
JOIN aluno_curso ON curso.id = aluno_curso.curso_id
GROUP BY categoria.nome
ORDER BY numero_alunos DESC
LIMIT 1
Oi, Matheus! Como vai?
Agradeço por compartilhar seu projeto com a comunidade Alura. Participar desse tipo de desafio é uma ótima forma de consolidar o aprendizado em SQL.
Você aplicou bem os conceitos fundamentais da linguagem. No seu SELECT, o uso do COUNT junto ao aluno_id permite contar corretamente os alunos matriculados em cada curso. A construção com JOIN encadeado, ligando a tabela categoria à tabela curso pelo campo categoria_id, e depois à tabela aluno_curso pelo campo curso_id, demonstra um bom entendimento sobre relacionamento entre tabelas.
O campo numero_alunos foi nomeado de forma clara como alias, o que facilita a leitura do resultado. O GROUP BY agrupando por categoria.nome, combinado com ORDER BY numero_alunos DESC e LIMIT 1, garante que apenas a categoria mais requisitada seja retornada.
Uma dica interessante para o futuro é utilizar a função SUM() quando precisar somar valores numéricos de uma coluna. Veja este exemplo:
SELECT categoria_id,
SUM(valor) AS total
FROM vendas
GROUP BY categoria_id;
Nesse exemplo, SUM() soma os valores de cada categoria e retorna o total agrupado por grupo, diferente do COUNT, que apenas contabiliza as ocorrências.
Você já teve a oportunidade de combinar COUNT e SUM em uma mesma consulta?