Re: Antw: using max() aggregate

From: Louis-David Mitterrand <cunctator(at)apartia(dot)ch>
To: Gerhard Dieringer <DieringG(at)eba-haus(dot)de>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Antw: using max() aggregate
Date: 2000-06-16 08:11:21
Message-ID: 20000616101121.B6451@styx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Fri, Jun 16, 2000 at 09:28:27AM +0200, Gerhard Dieringer wrote:
> > I am trying to return the most recently updated record from a table:
> >
> > SELECT max(stopdate) FROM auction;
> >
> > and this works but only returns the timestamp, however if I try to get
> > another column with the aggregate it fails:
> >
> > SELECT title,max(stopdate) FROM auction;
> > ERROR: Attribute auction.title must be GROUPed or used in an aggregate function
> >
> > Ok, so I group it now:
> >
> > SELECT title,max(stopdate) FROM auction GROUP BY title;
> > title | max
> > ---------------+------------------------
> > dfsdfsdf | 2000-07-10 05:00:00+02
> > dssdfsdfsdfsf | 2000-07-09 16:00:00+02
> > sdfsdfsdfsdf | 2001-04-10 15:00:00+02
> > (3 rows)
> >
> > But the problem is that I now get three rows when I only want the max()
> > item.
>
> SELECT title,stopdate
> FROM auction
> WHERE stopdate = (SELECT max(stopdate) FROM auction);
>
> should work.

Thanks for your suggestion.

Yes this would work nicely but if I need to add more conditional clauses
I have to duplicate them in the main SELECT and in the sub-SELECT:

SELECT title,max(stopdate)
FROM auction
WHERE stopdate = (SELECT max(stopdate) FROM auction AND stopdate > now())
AND stopdate > now();

Or am I missing something?

Tom Lane suggested using:

SELECT title,stopdate FROM auction ORDER BY stopdate LIMIT 1;

which seems the best solution (I was a bit concerned about performance,
but then again the max() aggregate does a scan of all rows as well).

Cheers,

--
Louis-David Mitterrand - ldm(at)apartia(dot)org - http://www.apartia.fr

This is Linux Country. On a quiet night you can hear Windows NT reboot.

Browse pgsql-sql by date

  From Date Subject
Next Message Gerhard Dieringer 2000-06-16 08:56:04 Re: Antw: using max() aggregate
Previous Message Gerhard Dieringer 2000-06-16 07:28:27 Antw: using max() aggregate