Re: [pgsql-ru-general] Агрегация массивов

Поиск
Список
Период
Сортировка
От Dmitriy Igrishin
Тема Re: [pgsql-ru-general] Агрегация массивов
Дата
Msg-id AANLkTimPaiv7GobtxWcGNV=AXTU=vWDJzm0UDbF+E2QU@mail.gmail.com
обсуждение исходный текст
Ответ на Агрегация массивов  (Mihail Nasedkin <m.nasedkin@gmail.com>)
Ответы Re: [pgsql-ru-general] Агрегация массивов
Список pgsql-ru-general
Привет,

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.


В списке pgsql-ru-general по дате отправления:

Предыдущее
От: Mihail Nasedkin
Дата:
Сообщение: Агрегация массивов
Следующее
От: Mihail Nasedkin
Дата:
Сообщение: Re: [pgsql-ru-general] Агрегация массивов