Ще трябва да определите как за групиране на стойности, които споделят един и същ category_id
. Да ги свържа? Изчислете сума?
За да създадете списъци със стойности, разделени със запетая, вашето изявление може да изглежда така:
SELECT category_id
,string_agg(col1, ', ') AS col1_list
,string_agg(col2, ', ') AS col2_list
FROM items
GROUP BY category_id
Имате нужда от Postgres 9.0 или по-нова версия за string_agg(col1, ', ')
.В по-старите версии можете да замените с array_to_string(array_agg(col1), ', ')
. Още агрегатни функции тук
.
Агрегирането на стойности в PostgreSQL е очевидно по-добрият подход за разлика от агрегирането на стойности в клиента. Postgres е много бърз при това и намалява (мрежовия) трафик.