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

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

https://www.nowcoder.com/practice/c93d2079282f4943a3771ca6fd081c23

题目要求

查询在2025-10-15以后,如果有一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程,那么输出

1、这个用户的user_id

2、满足前面条件的第一次购买成功的C++课程或Java课程或Python课程的日期first_buy_date

3、满足前面条件的所有日期里购买成功的C++课程或Java课程或Python课程的次数cnt,

并且输出结果按照user_id升序排序

刚开始审错题了,搞复杂了反而通不过。一定要认真审题!!!!

思路

select 
    user_id, 
    first_buy_date,  # 从子查询里的「订单id」,筛出min(date)的一行
    cnt # 统计 count(查询里的「订单id) 
from
(
    # 这个表需要:符合条件的user_id + 这个用户在 这些特定条件下的 订单信息
)
where  count(2025-10-15以后,下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程 的用户数量) >= 1  # 这个子查询还需要输出user_id, 这个条件下他的订单id
# 只要from的表有数据,这条直接成立,所以在实际代码中不用写
order by user_id

分步骤思路:

  1. 查询出:符合条件的用户user_id
  2. 查询出:这些符合条件的用户user_id 在特定条件下的订单信息
  3. 从2得出的表里,select 对应项

正确代码

select 
    distinct a.user_id,
    min(a.date) as first_buy_date,
    count(distinct a.id) as cnt
from
(
    # 符合条件的用户user_id 在满足该条件时的所有订单id 及其信息
    select *
    from order_info
    where user_id in (

        # 符合条件的用户user_id
        select 
            distinct o.user_id
        from order_info o
            left join (
                # 所有用户use_id、符合条件下的 订单数量
                select 
                    distinct user_id,
                    count(id)over(partition by user_id) as order_num
                from order_info
                where date > '2025-10-15'
                    and status = 'completed'
                    and product_name in ('C++','Java','Python') 
            )n
        on o.user_id = n.user_id
        where n.order_num >= 2
            
    )
    and date > '2025-10-15'
    and status = 'completed'
    and product_name in ('C++','Java','Python')

)a
group by a.user_id

全部评论

相关推荐

bg27强双非本,目前在学习golang后端gin框架部分,在b站找了一个轮子项目敲了一下,技术栈是gin + gorm + mysql + redis。我目前的想法是这一个月学习408和go八股以及刷算法然后在12月找个寒假实习然后大三下开始准备考研。我是考研意愿比较强烈,想问一下我是应该all in其中一个方向吗,我感觉我实习对我考研来说也是没什么帮助的好像。
牛客28967172...:毕业工作,考研,考公是完全不同的方向。 99%的人拼尽全力也只能把一个做好(能做好都已经是佼佼者了,比如进进大厂,考985或者考公) 如果你确定要考研可以不用学任何就业技术框架,也不用实习经验,刷题背知识点就行,但注意必须考92院校起步,因为这个年代双非硕毕业后完全不如双非本(互联网行业),可以说双非硕在互联网就业完全是负收益
投递哔哩哔哩等公司10个岗位
点赞 评论 收藏
分享
10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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