Re: select best price

From: Bruno Wolff III <bruno(at)wolff(dot)to>
To: Gary Stainburn <gary(dot)stainburn(at)ringways(dot)co(dot)uk>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: select best price
Date: 2005-10-26 18:40:02
Message-ID: 20051026184002.GI11447@wolff.to
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Wed, Oct 26, 2005 at 16:38:48 +0100,
Gary Stainburn <gary(dot)stainburn(at)ringways(dot)co(dot)uk> wrote:
> On Wednesday 26 October 2005 4:21 pm, Gary Stainburn wrote:
> > Hi folks
> >
> > I've got a table holding item code(cs_id), supplier a/c (co_id) , and
> > price (cs_price).
> >
> > How can I select the rows containing the lowest price for each item
> > code?
> >
> > I've tried various forms of min() etc and know it must be simple but
> > I'm stumped.
> >
> > Gary
>
> I've come up with the select below. Is there a better/more efficient
> way of doing this?
>
> select cp.cs_id, from cons_price_details cp,
> (select cs_id, min(cs_price) as cs_price
> from cons_price_details
> group by cs_id
> ) v
> where cp.cs_id = v.cs_id and cp.cs_price = v.cs_price;

If you only need one lowest price entry where there are ties, you could also
use DISTINCT ON (a nonstandard Postgres extension) and ORDER BY that may
execute faster.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Mario Splivalo 2005-10-26 19:41:39 Re: RETURNS SETOF primitive returns results in parentheses
Previous Message Bruno Wolff III 2005-10-26 18:29:10 Re: Combining two SELECTs by same filters