题解 | #牛客的课程订单分析(五)#
牛客的课程订单分析(五)
https://www.nowcoder.com/practice/348afda488554ceb922efd2f3effc427
with
order_cnt as (
select user_id,date,
count(*)over(partition by user_id) cnt, -- 开窗,用户购买数
row_number()over(partition by user_id order by date) rn -- 开窗,用户购买日期降序,序号
from order_info
where date>'2025-10-15' and -- 谓词下推,先过滤掉无用数据
status='completed' and
product_name in ('C++','Java','Python')
)
select user_id,
date_format(sum(if(rn=1,date,null)),'%Y-%m-%d') first_buy_date, -- 首次购买
date_format(sum(if(rn=2,date,null)),'%Y-%m-%d') second_buy_date, -- 第二次购买
cnt
from order_cnt
where cnt>=2 -- 下单2个以及2个以上
group by user_id,cnt;
