Dans PostgreSQL 8.4, vous ne pouvez pas ordonner explicitement array_agg
mais vous pouvez contourner ce problème en ordonnant les lignes transmises au groupe/agrégat avec une sous-requête :
SELECT id, array_to_string(array_agg(image), ',')
FROM (SELECT * FROM test ORDER BY id, rank) x
GROUP BY id;
Dans PostgreSQL 9.0, les expressions d'agrégation peuvent avoir un ORDER BY
clause :
SELECT id, array_to_string(array_agg(image ORDER BY rank), ',')
FROM test
GROUP BY id;