Skip site navigation (1) Skip section navigation (2)

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

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:26:56
Message-ID: AANLkTika2Mnijz01CXnY7aNguvtxECrPBrK_P+N4qv7=@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-ru-general
А ошибка в имени функции:

CREATE AGGREGATE agregate_array2array (
 sfunc = "сцепить2массива",
 basetype = anyarray,
 stype = anyarray,
 initcond = '{}'
);

12.12.10, Mihail Nasedkin<m(dot)nasedkin(at)gmail(dot)com> написал(а):
> Вот к чему стремился, нарыл в интернете из разных примеров:
>
> 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}"
>>
>> Результат тот, который требуется, но можно ли сделать агрегацию
>> массивов в одной функции?
>>
>> --
>> ---
>> С уважением,
>> Михаил Наседкин
>>
>
>
>
> --
> ---
> С уважением,
> Михаил Наседкин
>


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

In response to

Responses

pgsql-ru-general by date

Next:From: Mihail NasedkinDate: 2010-12-12 18:00:36
Subject: Re: Агрегация массивов
Previous:From: Mihail NasedkinDate: 2010-12-12 17:24:51
Subject: Re: Агрегация массивов

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group