RE: Select most recent record?
От | Marc Sherman |
---|---|
Тема | RE: Select most recent record? |
Дата | |
Msg-id | CGEPKMKAIFJINAOACFFEGEJHCGAA.msherman@projectile.ca обсуждение исходный текст |
Ответ на | Re: Select most recent record? (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-sql |
From: Tom Lane [mailto:tgl@sss.pgh.pa.us] > > "Marc Sherman" <msherman@projectile.ca> writes: > > I'd like to select the newest (max(timestamp)) row for each id, > > before a given cutoff date; is this possible? > > select * from log order by timestamp desc limit 1; Heh. I obviously simplified my situation too much. This is closer to what I've really got: create table user (userid int4 primary key, groupid int4); create table log (userid int4, timestamp datetime, value int4); I need to select sum(value) for each group, where the values chosen are the newest log entry for each group member that is before a cutoff date (April 1, 2001). Here's what I'm currently using: select user.groupid, sum(l1.value)from log as l1, userwhere user.userid=log.useridand log.timestamp in ( select max(timestamp)from log where log.timestamp<'2001-04-01' and log.userid=l1.userid)group by user.groupid; When I first posted, this was _very_ slow. I've since improved it by adding an index on log(userid,timestamp) - now it's just slow. If anyone knows how to make it faster, I'd appreciate it. - Marc
В списке pgsql-sql по дате отправления: