首页 > 试题广场 >

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

[编程题]牛客的课程订单分析(二)
  • 热度指数:84412 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

有很多同学在牛客购买课程来学习,购买会产生订单存到数据库里

有一个订单信息表(order_info),简况如下:

id user_id product_name
status
client_id
date
1 557336
C++
no_completed
1 2025-10-10
2 230173543
Python
completed
2 2025-10-12
3 57 JS
completed
3 2025-10-23
4 57 C++
completed
3 2025-10-23
5 557336
Java
completed
1 2025-10-23
6 57 Java
completed
1 2025-10-24
7 557336
C++
completed
1 2025-10-25

1行表示user_id557336的用户在2025-10-10的时候使用了client_id1的客户端下了C++课程的订单,但是状态为没有购买成功。

2行表示user_id230173543的用户在2025-10-12的时候使用了client_id2的客户端下了Python课程的订单,状态为购买成功。

。。。

最后1行表示user_id557336的用户在2025-10-25的时候使用了client_id1的客户端下了C++课程的订单,状态为购买成功。

请你写出一个sql语句查询在2025-10-15以后,同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的user_id,并且按照user_id升序排序,以上例子查询结果如下:

user_id
57
557336
解析:

id为46的订单满足以上条件,输出对应的user_id57;

id为57的订单满足以上条件,输出对应的user_id557336;

按照user_id升序排序。

示例1

输入

drop table if exists order_info;
CREATE TABLE order_info (
id int(4) NOT NULL,
user_id int(11) NOT NULL,
product_name varchar(256) NOT NULL,
status varchar(32) NOT NULL,
client_id int(4) NOT NULL,
date date NOT NULL,
PRIMARY KEY (id));

INSERT INTO order_info VALUES
(1,557336,'C++','no_completed',1,'2025-10-10'),
(2,230173543,'Python','completed',2,'2025-10-12'),
(3,57,'JS','completed',3,'2025-10-23'),
(4,57,'C++','completed',3,'2025-10-23'),
(5,557336,'Java','completed',1,'2025-10-23'),
(6,57,'Java','completed',1,'2025-10-24'),
(7,557336,'C++','completed',1,'2025-10-25');

输出

57
557336
头像 牛客题解官
发表于 2025-03-20 14:25:19
精华题解 题目描述 我们有一个表: order_info:包含订单信息,包括订单ID id、用户ID user_id、产品名称 product_name、订单状态 status、客户端ID client_id 和订单日期 date。 目标是查询出在2025年10月15日之后,同一个用户下单2个及以上状态为 展开全文
头像 此用户名涉嫌违规
发表于 2021-03-22 11:35:02
题目描述:sql语句查询在2025-10-15以后,同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的user_id,并且按照user_id升序排序。 select user_id from order_info where datediff(date,"20 展开全文
头像 SunburstRun
发表于 2021-02-26 16:09:38
通过 https://blog.nowcoder.net/n/2a752477a5bd462a8fdeacf8dd576931 我们可以写出: select * from order_info where date>'2 展开全文
头像 不是江小白
发表于 2021-04-28 14:05:40
解题思路:看题目要求:“请你写出一个sql语句查询在2025-10-15以后,同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的user_id,并且按照user_id升序排序”我们来拆分里面的各种条件: 看第一个就是查询时间要在 2025-10-15之后, 展开全文
头像 阿蘭
发表于 2021-12-05 15:44:26
注意: 1)WHERE子句中不能使用聚合函数,如SUM()、COUNT()、AVG()等; 2)WHERE必须用在GROUP BY之前,HAVING用在GROUP BY之后。 本题解答: SELECT user_id FROM order_info WHERE date > '2025-10- 展开全文
头像 DQ_restart
发表于 2022-02-15 16:42:34
第一步:按照题目要求,找出product_name在C++、Java、Python中的订单,并且筛选日期大于2025-10-15 SELECT *  FROM order_info  WHERE product_name IN  展开全文
头像 想到就去做
发表于 2021-08-26 15:04:20
select user_idfrom order_infowhere date > '2025-10-15'and status = 'completed'and product_name in('C++','Python','Java')group by user_idhaving coun 展开全文
头像 JanisZhan
发表于 2022-06-29 15:52:19
要记得筛选 status 为 completed 的 表示订单成交成功的 select user_id from ( select user_id,count(1) as total from order_info where date>'2025-10-15' 展开全文
头像 牛客145560421号
发表于 2021-07-13 16:21:40
订单条件:-------------2025-10-15之后-------------产品为C++,Java,Python-------------状态为成功的子查询中完成这个需求,并根据user_id分组计算出用户成功的订单总数cnt外层查询获取子查询中cnt>=2的user_id,并对us 展开全文
头像 高质量搬砖人
发表于 2021-04-02 14:06:13
请你写出一个sql语句查询在2025-10-15以后,同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的user_id,并且按照user_id升序排序 # 在2025-10-15以后 # 同一个用户下单2个以及2个以上 # 状态为购买成功 # C++课程或Ja 展开全文
头像 ZiMu_23
发表于 2022-10-09 09:57:52
select   user_id from   (     select       user_id,     &nbs 展开全文