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 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 :)