1
resposta

Qual categoria mais requisitada? (Módulo 2, aula 5)

Segue minha solução.

-- Qual categoria mais requisitada?

 SELECT categoria.nome,
        COUNT(curso.categoria_id) AS "Categoria mais requisitada"
        FROM categoria
        JOIN curso ON curso.categoria_id = categoria.id
        GROUP BY 1
        ORDER BY "Categoria mais requisitada" DESC
        LIMIT 1;
1 resposta

Oi, Elaine!! Tudo bem?

Peço desculpas por demorar a te responder.

Parabéns pelo desenvolvimento do desafio e muito obrigada por compartilhar sua query conosco!

No entanto, eu notei que ela não responde diretamente ao desafio proposto, que é sobre a categoria mais requisitada. A query apresentada está contando a quantidade de cursos em cada categoria e mostrando a categoria com mais cursos, mas essa abordagem não considera outros critérios importantes para avaliar a categoria mais requisitada, como o número de matrículas em cada curso.

Sendo assim, precisaremos adicionar um novo JOIN a sua query para contemplar esse aspecto, vamos analisar isso mais de perto?

Além de relacionar as tabelas curso e categoria, também precisamos relacionar curso com aluno_curso. Assim, conseguiremos obter a quantidade de estudantes inscritos em cada curso e, consequentemente, obter as categorias favoritas de cada aluno. Para isso, usaremos o seguinte comando:

JOIN aluno_curso ON aluno_curso.curso_id = curso.id

Acima, estamos relacionando as tabelas aluno_curso e curso a partir do número identificador de cada curso, representado por curso_id e id. Quando ambos os campos forem iguais, significa dizer que determinado aluno está matriculado em um curso específico.

Inserindo este JOIN abaixo daquele já existente em nossa query, chegaremos no seguinte resultado:

SELECT categoria.nome,
    COUNT(curso.categoria_id) AS "Categoria mais requisitada"
FROM categoria
    JOIN curso ON curso.categoria_id = categoria.id
    JOIN aluno_curso ON aluno_curso.curso_id = curso.id
    GROUP BY 1
    ORDER BY "Categoria mais requisitada" DESC
    LIMIT 1;

Dessa maneira, ao trabalhar com essas duas junções, iremos obter a categoria mais adorada pelos estudantes (levando em consideração os cursos que eles estão fazendo, os quais contém uma categoria específica).

Além disso, também podemos modificar o parâmetro da função COUNT, alterando para aluno_curso.aluno_id. Com isso, a contagem irá ocorrer a partir da relação entre alunos e cursos, que está presente na tabela aluno_curso.

Por fim, o SELECT final será este:

SELECT categoria.nome,
    COUNT(aluno_curso.aluno_id) AS "Categoria mais requisitada"
FROM categoria
    JOIN curso ON curso.categoria_id = categoria.id
    JOIN aluno_curso ON aluno_curso.curso_id = curso.id
    GROUP BY 1
    ORDER BY "Categoria mais requisitada" DESC
    LIMIT 1;

Elaine, continue sempre estudando e se empenhando. Caso surja alguma dúvida após a nova consulta que construímos ou durante os seus estudos, estarei aqui para te ajudar.

Um forte abraço.