2
respostas

Descobrir a categoria mais requisitada

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

2 respostas

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.

IDNomeQuantidade
2Programação5
1Front-end3
3Bancos de dados1

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