From: Bruno Wolff III <bruno@wolff.to>
To: Gary Stainburn <gary.stainburn@ringways.co.uk>
Cc: pgsql-sql@postgresql.org
Subject: Re: select best price
Date: Wed, 26 Oct 2005 13:40:02 -0500
Message-ID: <20051026184002.GI11447@wolff.to> (raw)
In-Reply-To: <200510261634.44796.gary.stainburn@ringways.co.uk>
References: <200510261621.39718.gary.stainburn@ringways.co.uk>
<200510261634.44796.gary.stainburn@ringways.co.uk>
On Wed, Oct 26, 2005 at 16:38:48 +0100,
Gary Stainburn <gary.stainburn@ringways.co.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.
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: bruno@wolff.to, gary.stainburn@ringways.co.uk
Subject: Re: select best price
In-Reply-To: <20051026184002.GI11447@wolff.to>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox