题解 | #牛客的课程订单分析(五)#

牛客的课程订单分析(五)

http://www.nowcoder.com/practice/348afda488554ceb922efd2f3effc427

1、题目要求查出在

限制条件:(1)2025-10-15以后,(2)产品在('C++','Python','Java')中(3)状态为成功(4)同一个用户购买两次及以上 的

指标:

(1)用户id(2)前两次购买的日期(3)总购买次数;

2、前三个条件好写,统一放到where筛选语句后

where date>'2025-10-15'
and status='completed'
and product_name in ('C++','Python','Java')

3、使用窗口函数,同时计算出各用户的购买次数和购买行为的先后顺序,这里排序用的是row_number(),不重复排序,因为可能存在同一天买多件产品的情况。

row_number()over(partition by user_id order by date) rk,
count(*)over(partition by user_id) cnt

新建表c作为查询对象,表c包含了有用户id,日期,购买序号,总次数字段的满足前三个条件的所有购买记录

4、对表c进行查询,筛选条件为总次数大于2,购买序号为1,2的信息

5、最后根据要求排序

完整代码如下:

select user_id,min(date),max(date),cnt
from
(
    select user_id,date,
    row_number()over(partition by user_id order by date) rk,
    count(*)over(partition by user_id) cnt
    from order_info
    where date>'2025-10-15'
    and status='completed'
    and product_name in ('C++','Python','Java')
    ) c
where c.cnt>=2
and rk in('1','2')
group by user_id
order by user_id
全部评论

相关推荐

点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务