postgres选择每个用户的前10条记录

时间:2019-05-21 10:39:23

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

假设我有一个 user_data 表,其中包含多个用户记录。

id       user_id  col1    col2  created_at
1        1        abc     x     2019-01-04
2        2        def     x     2019-02-01
3        3        ghi     x     2019-03-05
4        2        jkl     x     2019-07-07
5        2        mno     x     2019-06-01
6        3        pqr     x     2019-07-11

现在,我想在单个查询中选择每个用户的前10条最新记录。

1 个答案:

答案 0 :(得分:1)

使用row_number()

select ud.*
from (select ud.*,
             row_number() over (partition by user_id order by created_at desc) as seqnum
      from user_data ud
     ) ud
where seqnum <= 10;