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

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

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

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
可以将以上查询的结果当成一个新的表,那么这样思考就简单很多了,把这个新的表,按照user_id聚合,并且取出这种情况的最小购买时间,以及count(user_id),就能得到正确结果,如下:
select user_id,min(date) as first_buy_date,count(user_id) 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(user_id)>1) and date>'2025-10-15' and status='completed' and product_name in('C++','Java','Python') order by id) table_a

group by user_id order by user_id;

其实这个题目订单(二)和订单(三)筛选的东西,聚合之后是一样的,所以根据订单(二)的写法,加聚合更简单,:
select user_id,min(date) first_buy_date,count(user_id) cnt
from order_info
where date > '2025-10-15'
and product_name in ('C++','Java','Python')
and status = 'completed'
group by user_id
having count(user_id) > 1
order by user_id


全部评论
我感觉这题表述有问题啊,答案给出的是2025-10-15以后的购买成功的数目,但是题目却要求是所有日期购买成功的数目
3 回复 分享
发布于 2022-04-04 16:41
题目有问题,要求的是所有日期的订单数,但最后答案检测却是指定日期后的
点赞 回复 分享
发布于 2024-09-26 23:28 江苏
这不对吧,返回的是指定日期后的订单数,但是题目要的数量是所有日期买过的订单数
点赞 回复 分享
发布于 2023-03-11 01:45 广东
select user_id,min(date) first_buy_date,count(user_id) cnt from order_info where date>'2025-10-15' and status='completed' and product_name in ('C++','Java','Python') and user_id in (select user_id from order_info group by user_id having count(user_id)>=2) group by user_id order by user_id 我认为这样也可以,且比较简单,不知道有没有大佬可以看看
点赞 回复 分享
发布于 2022-10-29 09:57 天津
请问一下大佬,为什么cnt,是count(user_id),求回复,真的没搞明白
点赞 回复 分享
发布于 2021-09-07 18:08

相关推荐

评论
35
1
分享

创作者周榜

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