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

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

http://www.nowcoder.com/questionTerminal/4ae8cff2505f4d7cb68fb0ec7cf80c57

select user_id from order_info where date>'2025-10-15' and status='completed' and product_name in('C++','Java','Python')
group by user_id having count(user_id)>1
查找同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的user_id,那么利用子查询,写出:
select * from order_info where user_id in (select user_id from order_info where date>'2025-10-15' and status='completed' and product_name in('C++','Java','Python')
group by user_id having count(user_id)>1) 
就可以获得符合以上条件的user_id所有的购买信息,可能从例子中得到是如下信息:


所有,我们还要排除掉1,3的信息,所以,最后的语句如下:
select * from order_info where user_id in (select user_id from order_info where date>'2025-10-15' and status='completed' and product_name in('C++','Java','Python')
group by user_id having count(user_id)>1) and date>'2025-10-15' and status='completed' and product_name in('C++','Java','Python') order by id;

还有一些同学比较高级的写法:
WITH vip AS(
    SELECT user_id
    FROM order_info
    WHERE date > '2025-10-15'
    AND product_name IN ('C++', 'Java', 'Python')
    AND status = 'completed'
    GROUP BY user_id
    HAVING COUNT(id) >= 2
)

SELECT *
FROM order_info
WHERE date > '2025-10-15' 
AND status = 'completed'
AND product_name IN ('C++', 'Java', 'Python')
AND user_id IN (SELECT * FROM vip)
ORDER BY id;


全部评论
你好,我的代码是这样的,结果与题目中的输出一致,为什么通不过呢,大神可以帮我看看哪里有问题吗 select * from order_info where user_id in (select user_id from (select user_id ,count(id) from order_info group by user_id having count(id)>=2 )t1) and product_name in ('C++','Java','Python') and status='completed' and date >'2025-10-15' order by id;
点赞 回复 分享
发布于 2021-03-01 13:51
排除掉1,3前的user_id表怎么打印出来的呢,为啥前面where的条件没把1,3排除掉??
点赞 回复 分享
发布于 2021-05-06 09:04
这个如何 WITH a AS ( SELECT * FROM order_info WHERE date > '2025-10-15' AND status LIKE 'c%' AND product_name IN ('C++', 'Java', 'Python') ) SELECT * FROM a WHERE ( SELECT COUNT(1) FROM (SELECT * FROM a) b WHERE user_id = a.user_id ) >= 2 ORDER BY id
点赞 回复 分享
发布于 2024-05-04 01:09 湖北

相关推荐

Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
牛客316659795号:不是,证明hr初筛已经过了,要投给部门筛一遍
点赞 评论 收藏
分享
评论
10
2
分享

创作者周榜

更多
牛客网
牛客企业服务