select if(is_group_buy='Yes','GroupBuy',name) source,count(*)
from order_info o 
left join client c on o.client_id=c.id
where user_id in 
(
    select user_id 
    from order_info a
    where date>'2025-10-15'
    and product_name in ('C++','Java','Python')
    and status='completed'
    group by user_id 
    having count(user_id)>=2
)
and product_name in ('C++','Java','Python')
and status='completed'
and date>'2025-10-15'
group by client_id
order by source

用的是SQL79 牛客的课程订单分析(三) 这个代码改的,注意这里表连接需要使用外连接,因为 client_id中有一个为0,但是client表中是没有的。然后就是使用了一个if语句,当然使用 case when 语句也是可以的。