题解 | #牛客的课程订单分析(五)#
牛客的课程订单分析(五)
https://www.nowcoder.com/practice/348afda488554ceb922efd2f3effc427
-- 选择用户 ID、首次购买日期、第二次购买日期和购买次数 select user_id, min(date) as first_buy_date, min(next_dt) as second_buy_date, max(cnt) as cnt from ( -- 子查询,从订单信息表中选择特定条件的数据,并计算行号和下一个订单日期 select *, -- 按照用户 ID 分区,根据日期排序,为每个用户的订单分配序号 row_number() over(partition by user_id order by date) as cnt, -- 按照用户 ID 分区,根据日期排序,获取当前订单下一个订单的日期 lead(date,1) over(partition by user_id order by date) as next_dt from order_info -- 筛选条件:日期大于 2025-10-15,状态为已完成,产品名称为 Python、Java 或 C++ where date>'2025-10-15' and status='completed' and product_name in ('python','java','c++') -- 按照用户 ID 排序 order by user_id ) as t -- 按照用户 ID 分组 group by user_id -- 筛选条件:分组后的记录数至少为 2 having count(*) >= 2;