我有下表(raw_data):
trans_id,user_id,msg_code,record_time
给定时间范围(from_time,to_time)我想查询: 得到每个用户: 获取每种类型的最后一个msg_code。
更多解释: 希望收到每个用户, 唯一的msg_code,以便每个这样的行是每个用户的最后一个(记录时间明智)
表示例(trans_id,user_id,msg_code,record_time):
1, 1, 100, 2013-06-03 08:32:51
2, 1, 100, 2013-06-03 09:32:51
3, 1, 101, 2013-06-03 08:32:51
4, 1, 102, 2013-06-03 10:32:51
5, 2, 100, 2013-06-03 06:32:51
6, 2, 100, 2013-06-03 07:32:51
7, 2, 100, 2013-06-03 08:32:51
结果示例:
2, 1, 100, 2013-06-03 09:32:51
3, 1, 101, 2013-06-03 08:32:51
4, 1, 102, 2013-06-03 10:32:51
7, 2, 100, 2013-06-03 08:32:51
徒劳的尝试(不工作......):
SELECT DISTINCT ON (user_id,msg_code)
*
FROM raw_data
ORDER BY user_id, msg_code ASC
感谢您的帮助!
答案 0 :(得分:1)
原来我只错过了一小部分:
这是有效的:
SELECT DISTINCT ON (user_id,msg_code)
*
FROM raw_data
WHERE record_time > '2013-05-28 17:06:01' and record_time < '2013-05-30 17:06:01'
ORDER BY user_id, msg_code ASC, record_time DESC