From: | Richard Broersma Jr <rabroersma(at)yahoo(dot)com> |
---|---|
To: | wen tseng <went(at)hteamericas(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: How to find out top 3 records in each location |
Date: | 2006-11-20 17:49:19 |
Message-ID: | 452822.24102.qm@web31801.mail.mud.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
> On PostgreSQL, I have a table like this:
>
> Item Location Sales
> A X 10
> B X 6
> C Y 3
> D Y 8
> E Y 15
> F Y 11
>
> I'd like to find out top 3 items in each location and put those 3 items as colum values like
> this:
>
> Location Top1 Top2 Top3
> X A B
> Y E F D
>
> Since PostgreSQL doesn't support TOP, how can I do to get this result?
> Any solution will be appreciated.
Here is what I came up with. However, I am sure there maybe a better answer.
SELECT
A1.location,
( select sales
from sales
where location = A1.location
order by sales desc
limit 1
) as TOP1,
( select sales
from sales
where location = A1.location
order by sales desc
limit 1 offset 1
) as Top2,
( select sales
from sales
where location = A1.location
order by sales desc
limit 1 offset 2
) as Top3
FROM
( SELECT location
from sales
group by location
) AS A1
;
Regards,
Richard Broersma Jr.
From | Date | Subject | |
---|---|---|---|
Next Message | Richard Broersma Jr | 2006-11-20 17:57:41 | Re: How to find out top 3 records in each location |
Previous Message | Andrew Sullivan | 2006-11-20 17:48:22 | Re: How to find out top 3 records in each location |