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