aggregate version of first_value function?

Started by Itagaki Takahiroabout 15 years ago2 messageshackers
Jump to latest
#1Itagaki Takahiro
itagaki.takahiro@gmail.com

We have window function version of first_value(),
but aggregate version looks useful to write queries something like:

=# CREATE TABLE obj (id integer, pos point);
=# SELECT X.id,
first_value(Y.id ORDER BY X.pos <-> Y.pos) AS neighbor
FROM obj X, obj Y
GROUP BY X.id;

Is it reasonable? Or, do we have alternative ways for the same purpose?

--
Itagaki Takahiro

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Itagaki Takahiro (#1)
Re: aggregate version of first_value function?

Itagaki Takahiro <itagaki.takahiro@gmail.com> writes:

We have window function version of first_value(),
but aggregate version looks useful to write queries something like:

=# CREATE TABLE obj (id integer, pos point);
=# SELECT X.id,
first_value(Y.id ORDER BY X.pos <-> Y.pos) AS neighbor
FROM obj X, obj Y
GROUP BY X.id;

Is it reasonable? Or, do we have alternative ways for the same purpose?

I don't see any good reason to encourage people to write that in a
nonstandard way when there's a prefectly good standard way, ie,
use the window-function version.

regards, tom lane