Re: Getting pk of the most recent row, in a group by
| От | Terry Fielder |
|---|---|
| Тема | Re: Getting pk of the most recent row, in a group by |
| Дата | |
| Msg-id | 46C0E6EE.6080805@ashtonwoodshomes.com обсуждение |
| Ответ на | Getting pk of the most recent row, in a group by (Bryce Nesbitt <bryce1@obviously.com>) |
| Список | pgsql-sql |
Do you have a table of coupon types? Terry Terry Fielder terry@greatgulfhomes.com Associate Director Software Development and Deployment Great Gulf Homes / Ashton Woods Homes Fax: (416) 441-9085 Bryce Nesbitt wrote: > I've got a table of "coupons" which have an expiration date. For each > type of coupon, I'd like to get the primary key of the coupon which will > expire first. > > # create table coupon > ( > coupon_id serial primary key, > type varchar(255), > expires date > ); > insert into coupon values(DEFAULT,'free','2007-01-01'); > insert into coupon values(DEFAULT,'free','2007-01-01'); > insert into coupon values(DEFAULT,'free','2007-06-01'); > insert into coupon values(DEFAULT,'free','2007-06-01'); > insert into coupon values(DEFAULT,'50%','2008-06-01'); > insert into coupon values(DEFAULT,'50%','2008-06-02'); > insert into coupon values(DEFAULT,'50%','2008-06-03'); > > The desired query would look like: > > # select coupon_id,type,expires from coupon where type='free' order by > expires limit 1; > coupon_id | type | expires > -----------+------+------------ > 1 | free | 2007-01-01 > > > But be grouped by type: > > # select type,min(expires),count(*) from coupon group by type; > type | min | count > ------+------------+------- > free | 2007-01-01 | 4 ; pk=1 > 50% | 2008-06-01 | 3 ; pk=5 > > In the second example, is it possible to get the primary key of the row > with the minimum expires time? > >
В списке pgsql-sql по дате отправления: