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 по дате отправления:

Предыдущее
От: Najm Hashmi
Дата:
Сообщение: To Run 2 database servers at the same time
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Select most recent record?