Re: Set returning aggregate?

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Bborie Park <dustymugs(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org >> PG-General Mailing List" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Set returning aggregate?
Date: 2013-12-08 19:56:48
Message-ID: CAFj8pRBX0z-qU6oor_R06vTq3a10vJ+k1zVkk0d69vctVpTe1A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello

2013/12/8 Bborie Park <dustymugs(at)gmail(dot)com>

> I'm wondering if an aggregate function can return a set of records?
>

No, final function cannot returns set. It is disallowed.

Theoretically, it should be possible - it is explicitly prohibited. But if
it will be allowed, you can get same problems like using SRF function in
target list.

postgres=# select generate_series(1,2),generate_series(1,2);
generate_series │ generate_series
─────────────────┼─────────────────
1 │ 1
2 │ 2
(2 rows)

Time: 49.332 ms
postgres=# select generate_series(1,2),generate_series(1,3);
generate_series │ generate_series
─────────────────┼─────────────────
1 │ 1
2 │ 2
1 │ 3
2 │ 1
1 │ 2
2 │ 3
(6 rows)

Time: 0.445 ms

It will be hard defined a expected behaviour when somebody use more these
aggregates in same query and returns different number of rows.

Regards

Pavel

>
> Say I have a table with a column of type raster (PostGIS). I want to get
> the number of times the pixel values 1, 3 and 4 occur in that raster
> column. I am hoping to build an aggregrate function that returns the
> following...
>
> value | count
> --------+--------
> 1 | 12
> --------+--------
> 2 | 12
> --------+--------
> 3 | 12
>
> Is it possible for an aggregate function to return a set? I've written
> some test cases and it looks like the answer is No but I'd like
> confirmation.
>
> Thanks,
> Bborie Park
>
> PostGIS Steering Committee
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Dinesh Kumar 2013-12-09 08:42:48 Re: pgadmin III query
Previous Message Bborie Park 2013-12-08 19:40:37 Set returning aggregate?