如何使用SQL基于时间戳和唯一ID为每行数据选择最大值?

时间:2016-12-13 01:47:10

标签: sql postgresql max greatest-n-per-group

我的数据库中有一个表,我正在使用SQL查询从中检索数据。在我的查询中,我正在替换一些文本并使用整数。查询返回以下数据:

user_id | event_code | total_bookmarks | total_folders | folder_depth | ts
0         8            34                6               1              128926
0         8            35                6               1              129001
4         8            18                2               1              123870
6         8            30                2               1              130099
6         8            30                2               1              132000
6         8            30                2               1              147778

我使用的查询是:

SELECT
user_id,
event_code,
CAST(REPLACE(data1, 'total bookmarks', '') AS INTEGER) as total_bookmarks,
CAST(REPLACE(data2, 'folders', '') AS INTEGER) as total_folders,
CAST(REPLACE(data3, 'folder depth ', '') AS INTEGER) as folder_depth,
timestamp AS ts
FROM events
WHERE event_code = 8

我需要添加哪些内容才能为每个唯一的user_id选择每个id的最大ts(时间戳)?我尝试了MAX(时间戳),但是如果total_bookmark不同,我得到两行返回相同的ID(例如:user_id 0一行有34,另一行有35)我希望表看起来像这样:

user_id | event_code | total_bookmarks | total_folders | folder_depth | ts
0         8            34                6               1              129001
4         8            18                2               1              123870
6         8            30                2               1              147778

1 个答案:

答案 0 :(得分:0)

NULL