【Mysql】sql语句查询在2025-10-15以后,同一个用户下单2个。。。

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

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

题目描述:sql语句查询在2025-10-15以后,同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的订单id,是否拼团以及客户端名字信息,最后一列如果是非拼团订单,则显示对应客户端名字,如果是拼团订单,则显示NULL,并且按照order_info的id升序排序。
个人思路:以我的(三)为基础,右连接+窗口函数。

select t2.id,t2.is_group_buy,t1.name as client_name
from client t1 right join
(
    select *,count(id) over(partition by user_id) as number
    from order_info
    where datediff(date,"2025-10-15")>0
      and status="completed"
      and product_name in ("C++","Java","Python")
) t2
on t1.id=t2.client_id
where t2.number >1
order by t2.id
牛客题霸-SQL篇【Mysql】 文章被收录于专栏

少壮不努力,老大勤刷题

全部评论
一开始还用了if,原来只需要join就好,真是妙
1 回复 分享
发布于 2021-05-09 15:57
为什么where t2.number >1,换成 and t2.number >1 buxing
1 回复 分享
发布于 2021-11-29 18:17
厉害厉害,right join真是想不到,第一反应就是case when
点赞 回复 分享
发布于 2022-03-29 16:34
如果团购订单有对应的客户端名称呢?还是得用case when 的吧
点赞 回复 分享
发布于 2023-03-16 14:55 上海

相关推荐

45 3 评论
分享
牛客网
牛客企业服务