题解 | #牛客的课程订单分析(五)#
牛客的课程订单分析(五)
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;