SQL最近三个日期所有订单

订单信息表:  order_info
字段: user_id create_date total_amount

需求:查询出每个用户的最近三个日期所有订单

 1 -- 方法一
 2 select two.* from (
 3     select user_id,create_date from (
 4         select user_id,create_date,row_number() over(partition by user_id order by create_date desc) drnk from (
 5             select distinct user_id,create_date from order_info
 6         ) a 
 7     ) b where b.drnk <= 3
 8 
 9 )  one  join (
10     select order_id, user_id,create_date from order_info
11 ) two on one.user_id = two.user_id and one.create_date = two.create_date
12 ;
13 
14 
15 -- 方法二
16 -- 用dense_rank 
17 select order_id,user_id,create_date from (
18     select order_id,user_id,create_date,dense_rank() over(partition by user_id order by create_date desc) drnk from order_info
19 ) a where a.drnk <= 3

 

posted on 2025-06-23 11:50  北京的小乔  阅读(13)  评论(0)    收藏  举报