Another couple of possible ways:
Select groupfield,value
From tbl x1
Where number = (select max(number) from tbl x2 where x2.groupfield=
x1.groupfield)
Select groupfield,value
From tbl x1
Where (groupfield,number) in (select groupfield,max(number) from tbl group
by groupfield)
Which is quickest?
Probably best to try out and see.
-----Original Message-----
From: pgsql-performance-owner@postgresql.org
[mailto:pgsql-performance-owner@postgresql.org] On Behalf Of Kevin Grittner
Sent: Tuesday, August 10, 2010 7:38 PM
To: Matthew Wakeling; pgsql-performance@postgresql.org
Subject: Re: [PERFORM] Sorted group by
Matthew Wakeling <matthew@flymine.org> wrote:
> I'm trying to eke a little bit more performance out of an application
In addition to the suggestion from Thomas Kellerer, it would be interesting
to try the following and see how performance compares using real data.
select group, value from tbl x
where not exists
(select * from tbl y
where y.group = x.group and y.number > x.number);
We have a lot of code using this general technique, and I'm curious whether
there are big gains to be had by moving to the windowing functions. (I
suspect there are.)
-Kevin
--
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance
No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.851 / Virus Database: 271.1.1/3061 - Release Date: 08/09/10
21:35:00