Regrouper plusieurs lignes dans un même champ

L'objectif est de regrouper plusieurs lignes, pour que chaque valeur de chaque ligne soit concaténée dans le même champ. Il faut obtenir, à partir de :

le résultat suivant :

id

1

2

masse

25, 30

15

select id, matricule, array_to_string(array_agg(masse),', ') as masse
from matable
group by id
order by id;

Il est parfois utile de trier le le champ de résultat. Voici un exemple avec une concaténation :

select uid, array_to_string(array_agg(code||':'||value order by code,value),',') as identifiants 
from ...
group by uid
order by uid;

Ici, la concaténation s'effectue en accolant un code et une valeur (avec : comme séparateur), chaque couple étant séparé par une virgule. En rajoutant un order by dans la clause array_agg, l'affichage sera trié par code et par valeur.