Sql 在具有重复键的表中查找具有不同键的最新记录

Sql 在具有重复键的表中查找具有不同键的最新记录,sql,amazon-redshift,Sql,Amazon Redshift,我一直在尝试在一个表中查找最新的记录,该表包含一个包含重复键的表,如下表所示: id | user | timestamp -----------+---------------+------------------------- aaa | user_5 | 2015-01-28 22:28:55.111 aaa | user_6 | 2015-01-29 22:28:55.111 aaa

我一直在尝试在一个表中查找最新的记录,该表包含一个包含重复键的表,如下表所示:

 id        |   user        |   timestamp
-----------+---------------+-------------------------
 aaa       | user_5       | 2015-01-28 22:28:55.111
 aaa       | user_6       | 2015-01-29 22:28:55.111
 aaa       | user_1       | 2015-01-24 22:28:55.111
 aaa       | user_4       | 2015-01-27 22:28:55.111
 aaa       | user_8       | 2015-01-31 22:28:55.111
 aaa       | user_2       | 2015-01-25 22:28:55.111
 aaa       | user_0       | 2015-01-23 22:28:55.111
 aaa       | user_9       | 2015-01-22 22:28:55.111
 zzz       | user_new     | 2015-01-22 22:28:55.111
 aaa       | user_3       | 2015-01-26 22:28:55.111
 aaa       | user_7       | 2015-01-30 22:28:55.111
预期的结果是

 id        |   user        |   timestamp
-----------+---------------+-------------------------
 aaa       | user_8       | 2015-01-31 22:28:55.111
 zzz       | user_new     | 2015-01-22 22:28:55.111
我想不出能得到想要的结果。请帮助

行号()
是一个简单的解决方案:

select id, user, timestamp
from (select t.*, row_number() over (partition by id order by timestamp desc) as seqnum
      from t
     ) t
where seqnum = 1;

你可以试试这个查询

SELECT 
       id          , 
       user        , 
       timestamp 
FROM 
       [table name]
WHERE 
       timestamp=(SELECT MAX(timestamp) FROM [table name])
GROUP BY 
       id