No PostgreSQL 8.4 você não pode ordenar explicitamente
array_agg
mas você pode contornar isso ordenando as linhas passadas para o grupo/agregado com uma subconsulta:SELECT id, array_to_string(array_agg(image), ',')
FROM (SELECT * FROM test ORDER BY id, rank) x
GROUP BY id;
No PostgreSQL 9.0, as expressões agregadas podem ter um
ORDER BY
cláusula:SELECT id, array_to_string(array_agg(image ORDER BY rank), ',')
FROM test
GROUP BY id;