题目描述
有一个订单信息表(order_info),有一个客户端表(client),
请你写出一个sql语句查询在2025-10-15以后,同一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程的订单id,
是否拼团以及客户端名字信息,最后一列如果是非拼团订单,则显示对应客户端名字,如果是拼团订单,则显示NULL,并且按照order_info的id升序排序
思路
窗口函数和之前一样的
使用 left join 解决,以 order_info, t2 连接后的表为主表,左连接 client 表即可解决,或者使用 case when xxx then end 的方法
case
when o.is_group_buy = 'No' then c.name
else NULL
end
代码
select
o.id,
o.is_group_buy,
case
when o.is_group_buy = 'No' then c.name
else NULL
end
from
order_info o
left join client c on o.client_id = c.id
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(id) > 1
)
and o.product_name in ('C++', 'Java', 'Python')
and o.status = 'completed'
and o.date >= '2025-10-15'
标签:info,group,name,SQL276,id,牛客,课程,client,order
From: https://www.cnblogs.com/loongnuts/p/17116077.html