| From: | "Julian Scarfe" <julian(at)avbrief(dot)com> |
|---|---|
| To: | "Alex" <alex(at)meerkatsoft(dot)com>, <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: SQL Question |
| Date: | 2005-04-16 08:10:37 |
| Message-ID: | 004a01c5425b$c6b4c500$0600a8c0@Wilbur |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
From: "Alex" <alex(at)meerkatsoft(dot)com>
> - How can i select only the newest record for each ProdId ?
>
> 100 | 2005-04-01
> 200 | 2005-04-01
>
DISTINCT ON was made for this and on the similar tables I have performs
rather more efficiently than using a subquery.
select distinct on (ProdId) ProdId , LastUpdate
from produpdate
order by ProdId , LastUpdate desc;
> - How can i select to retrieve the last 2 dates in record
>
> 100 | 2005-04-01 | 2005-03-01
> 200 | 2005-04-01 | 2005-03-01
To get the previous one, my first thought is something like:
select distinct on (ProdId) ProdId , LastUpdate
from produpdate p1
where LastUpdate <> (
select max(LastUpdate ) from produpdate p2 where p2.ProdId = p1.ProdId
)
order by ProdId , LastUpdate desc ;
but there may be a much more efficient way of getting the nth result in
general.
Julian Scarfe
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Poul Møller Hansen | 2005-04-16 08:37:16 | Re: Loosing connection with the database |
| Previous Message | Costin Manda | 2005-04-16 07:15:55 | Division by zero |