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

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

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

问题:请你写出一个sql语句查询在2025-10-15以后,如果有一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程,那么输出这个用户的user_id,以及满足前面条件的第一次购买成功的C++课程或Java课程或Python课程的日期first_buy_date,以及购买成功的C++课程或Java课程或Python课程的次数cnt,并且输出结果按照user_id升序排序

问题拆解:1.按照上一题的答案,写出满足三个条件并且下单为2次及以上的user_id

2.从order_info表格中提取字段,设置筛选条件让user_id在步骤1范围内,并且也满足三个条件;

3.从步骤2中新生成的表格中提取需要的字段,按照user_id分组,取日期最小值(第一个日期),分组之后记一下数就是需要的cnt结果;

4.常规排序;

以上。

SELECT user_id, min(date) AS first_buy_date, count(*) AS cnt FROM
	(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(*)>=2)
	AND date>'2025-10-15' 
    AND status = 'completed' 
    AND product_name in ('C++', 'Java', 'Python')
	ORDER BY user_id
	 ) re 
GROUP BY user_id
ORDER BY user_id
全部评论

相关推荐

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