Re: Агрегация массивов

Поиск
Список
Период
Сортировка
От Mihail Nasedkin
Тема Re: Агрегация массивов
Дата
Msg-id AANLkTimw9_NazLjO0dBuGgE2xE9xHJFDwi_is0wsPDJ8@mail.gmail.com
обсуждение исходный текст
Ответ на Агрегация массивов  (Mihail Nasedkin <m.nasedkin@gmail.com>)
Ответы Re: Агрегация массивов
Список pgsql-ru-general
Вот к чему стремился, нарыл в интернете из разных примеров:

CREATE OR REPLACE FUNCTION "сцепить2массива"(anyarray, anyarray)
  RETURNS anyarray AS
'  BEGIN RETURN $1 || $2; END;'
  LANGUAGE 'plpgsql';

CREATE AGGREGATE agregate_array2array (
  sfunc = array_concat,
  basetype = anyarray,
  stype = anyarray,
  initcond = '{}'
);

select id,
agregate_array2array(arr)

from (
values
       (0, array[0]),
       (1, array[1,2]),
       (1, array[3,4,5])
) v (id, arr)

group by id
;

Вообще понимания агрегации у меня нету.

12.12.10, 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}"
>
> Результат тот, который требуется, но можно ли сделать агрегацию
> массивов в одной функции?
>
> --
> ---
> С уважением,
> Михаил Наседкин
>



--
---
С уважением,
Михаил Наседкин

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

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