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
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 DESC
Nã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 ON
aluno_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 :)