In PostgreSQL 8.4 non puoi ordinare esplicitamente array_agg
ma puoi aggirarlo ordinando le righe passate al gruppo/aggregato con una sottoquery:
SELECT id, array_to_string(array_agg(image), ',')
FROM (SELECT * FROM test ORDER BY id, rank) x
GROUP BY id;
In PostgreSQL 9.0 le espressioni aggregate possono avere un ORDER BY
clausola:
SELECT id, array_to_string(array_agg(image ORDER BY rank), ',')
FROM test
GROUP BY id;