Fui rodar o exemplo apresentado mas não consegui rodar porque a posição do Having estava errado, aí corrigi e deu certo
SELECT curso.nome,
COUNT(aluno_curso.aluno_id) numero_alunos
FROM curso
JOIN aluno_curso ON aluno_curso.curso_id = curso.id
GROUP BY 1
HAVING COUNT(aluno_curso.aluno_id) > 2
ORDER BY numero_alunos DESC;
A resposta que consegui desenvolver foi a seguinte, montei a query para exibir uma tabela com as categorias de cursos e a quantidade de cursos cadastradas, desta tabela fiz a query principal para exibir apenas as categorias que tenham acima de dois cursos cadastrados
select nome,
qtd_alunos
from (
SELECT curso.nome,
COUNT(aluno_curso.aluno_id) as qtd_alunos
FROM curso
JOIN aluno_curso ON aluno_curso.curso_id = curso.id
GROUP BY 1
ORDER BY count(aluno_curso.aluno_id) DESC
) as categoria_cursos
where qtd_alunos > 2;
observei também que na subquery é obrigatório criar um alias para ela, que chamei de categoria_cursos