Postgresql - SQL, utilizando MIN

Olá a todos!
Tenho uma tabela com os campos (id_aluno, disciplina, nota). Preciso listar o id_aluno que teve a menor nota em cada uma das disciplinas, ou seja, deve aparecer somente um aluno por disciplina…

O problema é que o group by exige a declaração do id_aluno e se eu tirá-lo não terei a informação do aluno na listagem.

db: Postgresql

Abraço

Baca

Eu posso te agradecer pela sua pergunta.
Este é meio que um problema que vira e mexe aparece e nunca tinha encontrado uma boa solução para isso.

Graças a sua pergunta, me motivei a procurar algo melhor e achei a solução abaixo nesse link:

SELECT DISTINCT ON (disciplina)
       disciplina, nota, id_aluno
FROM   notas
ORDER  BY disciplina, nota desc

Repare que esse DISTINCT ON só funciona no Postgresql

Ah, e seria uma boa idéia criar o indice abaixo na sua tabela:

create index ix_notas_disciplina_nota on notas(disciplina, nota desc);

Eu é que agradeço Abel, pois, essa também não foi a primeira vez que me deparei com esse problema e, embora já tivesse procurado na net, não havia encontrado essa sua ótima solução. Parabéns e obrigado!!

[]s

Baca