Als je de rang wilt, doe dan iets als
SELECT id,num,rank FROM (
SELECT id,num,rank() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4
Of als u het rijnummer echt wilt, gebruik dan
SELECT id,num,row_number FROM (
SELECT id,num,row_number() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4
Ze zullen verschillen als je ergens gelijke waarden hebt. Er is ook density_rank() als je dat nodig hebt.
Dit vereist natuurlijk PostgreSQL 8.4.