Vous devrez définir, comment pour regrouper les valeurs qui partagent le même category_id
. Les concaténer ? Calculer une somme ?
Pour créer des listes de valeurs séparées par des virgules, votre déclaration pourrait ressembler à ceci :
SELECT category_id
,string_agg(col1, ', ') AS col1_list
,string_agg(col2, ', ') AS col2_list
FROM items
GROUP BY category_id
Vous avez besoin de Postgres 9.0 ou version ultérieure pour string_agg(col1, ', ')
.Dans les anciennes versions, vous pouvez remplacer par array_to_string(array_agg(col1), ', ')
. Plus de fonctions d'agrégation ici
.
Agréger des valeurs dans PostgreSQL est l'approche nettement supérieure par rapport à l'agrégation de valeurs dans le client. Postgres est très rapide cela réduit le trafic (réseau).