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

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

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;




全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务