From: | Mihail Nasedkin <m(dot)nasedkin(at)gmail(dot)com> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Агрегация массивов |
Date: | 2010-12-12 17:24:51 |
Message-ID: | AANLkTimw9_NazLjO0dBuGgE2xE9xHJFDwi_is0wsPDJ8@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(dot)nasedkin(at)gmail(dot)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}"
>
> Результат тот, который требуется, но можно ли сделать агрегацию
> массивов в одной функции?
>
> --
> ---
> С уважением,
> Михаил Наседкин
>
--
---
С уважением,
Михаил Наседкин
From | Date | Subject | |
---|---|---|---|
Next Message | Mihail Nasedkin | 2010-12-12 17:26:56 | Re: Агрегация массивов |
Previous Message | Mihail Nasedkin | 2010-12-12 16:37:10 | Re: [pgsql-ru-general] Агрегация массивов |