Привет,
CREATE TABLE att (id integer not null, dat integer[] not null);
INSERT INTO att(id, dat) SELECT 1, ARRAY[1,2];
INSERT INTO att(id, dat) SELECT 1, ARRAY[3,4,5];
INSERT INTO att(id, dat) SELECT 2, ARRAY[6];
INSERT INTO att(id, dat) SELECT 2, ARRAY[7,8,9,10];
SELECT id, array_agg(dat) FROM(SELECT id, unnest(dat) as dat from att) AS foo GROUP BY id;
id | array_agg
----+--------------
1 | {1,2,3,4,5}
2 | {6,7,8,9,10}
(2 rows)
Надеюсь, что понял Вас правильно.
12 декабря 2010 г. 14:24 пользователь Mihail Nasedkin
<m.nasedkin@gmail.com> написал:
Как обычно, доброго всем.
Встала задача агрегировать не одиночные значения, а массивы в один
результирующий массив.
Пока смог реализовать такой, неуклюжий вариант:
select id,
string_to_array(
array_to_string(
array_concat(
array_to_string(arr, ',')
)
, ',')
, ',')::int[]
from (
values
(0, array[0]),
(1, array[1,2]),
(1, array[3,4,5])
) v (id, arr)
group by id
;
Результат:
1;"{1,2,3,4,5}"
0;"{0}"
Результат тот, который требуется, но можно ли сделать агрегацию
массивов в одной функции?
--
---
С уважением,
Михаил Наседкин
--
Sent via pgsql-ru-general mailing list (pgsql-ru-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-ru-general
--
// Dmitriy.