Tentei resolver aqui, mas nao consegui chegar a uma conclusao que nao seja a partir da criacao de uma tabela de relacionamento categoria-curso. Alguem pode me ajudar, sou bem iniciante ainda em SQL
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!
Tentei resolver aqui, mas nao consegui chegar a uma conclusao que nao seja a partir da criacao de uma tabela de relacionamento categoria-curso. Alguem pode me ajudar, sou bem iniciante ainda em SQL
Aqui está o script/relatório das categorias ordenadas por qual tem mais alunos.
SELECT categoria.id,
categoria.nome,
count(1)
FROM public.curso
JOIN public.aluno_curso
ON curso.id = aluno_curso.curso_id
JOIN public.categoria
ON curso.categoria_id = categoria.id
GROUP BY categoria.id, categoria.nome
ORDER BY COUNT DESCNão é necessário criar uma nova tabela para relacionar o curso com a categoria, até por que o curso tem um código chamado CATEGORIA_ID, e é justamente esse campo que liga as duas tabelas. No script, estou agrupando por categoria e utilizando a função COUNT para retornar o número de registros para aquele grupo(categoria). Após isso, ordeno o SQL pelo count decrescente.
| ID | Nome | Quantidade |
|---|---|---|
| 2 | Programação | 5 |
| 1 | Front-end | 3 |
| 3 | Bancos de dados | 1 |
SELECT categoria.nome, COUNT(aluno_curso.aluno_id) AS numero_alunosFROM
categoriaJOIN
curso ON curso.categoria_id = categoria.idJOIN
aluno_curso ONaluno_curso.curso_id = curso.id GROUP BY 1 ORDER BY numero_alunos DESC;
Também sou iniciante mas tentei seguir o modelo do prof e saiu assim. Funcionou direitinho por aqui :)