Olá, Henrique, tudo bem?
É possível sim, em outros bancos de dados, como o SQL Server, quando utilizamos uma função de agregação, precisamos também utilizar a cláusula GROUP BY
, pois é necessário especificar por quais campos queremos realizar o agrupamento dos registros, e nestes casos, precisamos especificar exatamente os campos que informamos no SELECT
.
No caso do PostgreSQL, não precisamos utilizar a cláusula GROUP BY
ao utilizar uma função de agregação, e nem precisamos informar exatamente os campos que estão no SELECT
, então, creio que você não terá problemas ao utilizar o campo aluno.id:
- Utilizando o campo aluno.id no
GROUP BY
:
SELECT aluno.primeiro_nome,
aluno.ultimo_nome,
COUNT(aluno_curso.curso_id) numero_cursos
FROM aluno
JOIN aluno_curso ON aluno_curso.aluno_id = aluno.id
GROUP BY aluno.id
ORDER BY numero_cursos DESC;
- Utilizando os campos informados no
SELECT
no GROUP BY
:
SELECT aluno.primeiro_nome,
aluno.ultimo_nome,
COUNT(aluno_curso.curso_id) numero_cursos
FROM aluno
JOIN aluno_curso ON aluno_curso.aluno_id = aluno.id
GROUP BY aluno.primeiro_nome,
aluno.ultimo_nome
ORDER BY numero_cursos DESC;
A título de curiosidade, caso queira ver um pouco mais sobre o assunto, indico a leitura da documentação do PostgreSQL.
OBS: Infelizmente a documentação do PostgreSQL é em inglês, então, caso tenha dificuldade em relação a este idioma, indico que tente utilizar o tradutor do navegador, para conseguir efetuar a leitura em português, mas qualquer dúvida ou dificuldade estarei à disposição.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!