点击关注公众号,干货第一时间送达

这题估计小编还没讲解,
聪明的小伙伴们就知道怎么解题了,
只有诸位看过之前的文章:
掌握了"开窗排序"的使用,
这类题目,易如反掌。
【温馨提示:建表语句及数据导入脚本,可以翻看之前的文章:
一、需求场景
题目:
查询订单表order_info,每个用户的最近三笔订单。
订单表order_info:

正确结果:

二、解决方案
演示工具:Hive-3.1.3 + DataGrip2022
每个用户的最近三笔订单,
可以采用按照用户分组,按照订单日期排序,
然后再筛选前3笔即可。
(1)针对用户,按照user_id分组,create_date排序
select
user_id,
order_id,
create_date,
row_number() over (partition by user_id order by create_date desc) as rk
from order_info
结果集:

(2)筛选前3笔
select user_id,order_id,create_date
from (
select
user_id,
order_id,
create_date,
row_number() over (partition by user_id order by create_date desc) as rk
from order_info
)t1
where rk<=3
结果集:


文章转载自皮皮克克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




