Wenn Sie den Rang möchten, tun Sie so etwas wie
SELECT id,num,rank FROM (
SELECT id,num,rank() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4
Oder wenn Sie wirklich die Zeilennummer wollen, verwenden Sie
SELECT id,num,row_number FROM (
SELECT id,num,row_number() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4
Sie unterscheiden sich, wenn Sie irgendwo gleiche Werte haben. Es gibt auch dense_rank() falls du das brauchst.
Dies erfordert natürlich PostgreSQL 8.4.