Thread: Array operator "sum array values"

Array operator "sum array values"

From
Scara Maccai
Date:
Hi,

is there a syntax that sums the values of an array?

That is, having an array like

{1,3,8},{5,6,7}

something like

select arr[1:2][2:3]

gives

{1,3},{6,7}


; what I'd like is:

select arr[1$2][2$3]

gives:

17 (that is, 1+3 + 6+7)

If there is no such operator, would it be complicated adding it to postgres?
I mean: is the "[:]" operator an internal thing (the parser "knows" about it) or is it just like any other operators
thatcan be added ? 









      ___________________________________
Scopri il Blog di Yahoo! Mail: trucchi, novità, consigli... e la tua opinione!
http://www.ymailblogit.com/blog/

Re: Array operator "sum array values"

From
"Pavel Stehule"
Date:
Hello

On 31/03/2008, Scara Maccai <m_lists@yahoo.it> wrote:
> Hi,
>
>  is there a syntax that sums the values of an array?
>
>  That is, having an array like
>
>  {1,3,8},{5,6,7}
>
>  something like
>
>  select arr[1:2][2:3]
>
>  gives
>
>  {1,3},{6,7}
>
>
>  ; what I'd like is:
>
>  select arr[1$2][2$3]
>
>  gives:
>
>  17 (that is, 1+3 + 6+7)
>
>  If there is no such operator, would it be complicated adding it to postgres?
>  I mean: is the "[:]" operator an internal thing (the parser "knows" about it) or is it just like any other operators
thatcan be added ? 
>
>

create or replace function sum_elements(anyarray)
returns anyelement as $$
select sum($1[i])
   from generate_series(array_lower($1,1),
                                       array_upper($1,1)) g(i);
$$ language sql immutable;

select sum_elements(array[1,2,3]); --> 6

Regards
Pavel Stehule
>
>
>
>
>
>
>
>       ___________________________________
>  Scopri il Blog di Yahoo! Mail: trucchi, novità, consigli... e la tua opinione!
>  http://www.ymailblogit.com/blog/
>
>
>  --
>  Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
>  To make changes to your subscription:
>  http://www.postgresql.org/mailpref/pgsql-general
>