1
resposta

Desafio (Categoria)

cada dia mais entendendo a linguagem SQL :)

SELECT categoria.nome,
COUNT (categoria.id) AS quantidade_categoria
FROM categoria
JOIN curso ON curso.categoria_id = categoria.id 
GROUP BY 1
ORDER BY quantidade_categoria DESC;
1 resposta

Oi, Diego!! Tudo certo por aí?

Desde já, peço desculpas pela demora em retornar.

Fico muito feliz em ver a sua evolução na área de Ciência de Dados! Aprender SQL é super divertido e, a cada passo dado, assimilamos novos saberes acerca dessa linguagem tão importante.

Com relação a sua query, tenho alguns pontos para comentar, vamos nessa?

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 (categoria.id) AS quantidade_categoria
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 quantidade_categoria DESC;

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.

Outro detalhe importante é a obtenção da categoria mais requisitada. Para que isso seja possível, precisamos limitar a quantidade de registros que serão apresentados na visualização final utilizando o comando LIMIT 1.

Após a adição dos pontos que conversamos, teremos o seguinte SELECT:

SELECT categoria.nome,
    COUNT (aluno_curso.aluno_id) AS quantidade_categoria
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 quantidade_categoria DESC
    LIMIT 1;

Diego, 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.

Abraços e até mais!