PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Grouper par colonne spécifiée dans PostgreSQL

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).