Re: Lowest 2 items per
От | Mario Dankoor |
---|---|
Тема | Re: Lowest 2 items per |
Дата | |
Msg-id | 4FC90A7F.9020605@gmail.com обсуждение исходный текст |
Ответ на | Re: Lowest 2 items per ("Relyea, Mike" <Mike.Relyea@xerox.com>) |
Ответы |
Re: Lowest 2 items per
|
Список | pgsql-sql |
On 2012-06-01 5:44 PM, Relyea, Mike wrote: >> -----Original Message----- >> From: David Johnston [mailto:polobo@yahoo.com] >> Sent: Friday, June 01, 2012 11:13 AM >> To: Relyea, Mike >> Cc:<pgsql-sql@postgresql.org> >> Subject: Re: [SQL] Lowest 2 items per >> >> >> I would recommend using the "RANK" window function with an appropriate >> partition clause in a sub-query then in the outer query you simply > WHERE >> rank<= 2 >> >> You will need to decide how to deal with ties. >> >> David J. > > > David, > > I've never used window functions before and rank looks like it'd do the > job quite nicely. Unfortunately I'm using 8.3 - which I should have > mentioned in my original request but didn't. Window functions weren't > introduced until 8.4 from what I can tell. > > Mike > Mike, try following query it's a variation on a top N ( = 3) query SELECT FRS.* FROM ( SELECT PRN.make ,PRN.model ,CSM.color ,CSM.type ,cost/yieldrank FROM consumable CSM ,printers PRN ,printersandconsumablePCM WHERE 1 = 1 AND PCM.printerid = PRN.printerid AND PCM.consumableid = CSM.consumableid group by PRN.make ,PRN.model ,CSM.color ,CSM.type ) FRS WHERE 3 > ( SELECT COUNT(*) FROM ( SELECT PRN.make ,PRN.model ,CSM.color ,CSM.type ,cost/yield rank FROM consumable CSM ,printers PRN ,printersandconsumable PCM WHERE 1 = 1 AND PCM.printerid = PRN.printerid AND PCM.consumableid = CSM.consumableid group by PRN.make ,PRN.model ,CSM.color ,CSM.type ) NXT WHERE 1 = 1 AND NXT.make = FRS.make AND NXT.model= FRS.model AND NXT.color=FRS.color AND NXT.type = FRS.type AND NXT.cost <= FRS.cost )
В списке pgsql-sql по дате отправления: