\使用case when来定义最后一列
\子查询中不能出现group by,因为只会返回条件对应的第一个值

select t.id,
       t.is_group_buy,
       (case when t.is_group_buy = 'No'
        then c.name
        else null
        end) as client_name
from (
      select *,
             count(id)over(partition by user_id) as cnt
      from order_info
      where date > '2025-10-15'
      and status = 'completed'
      and product_name in ('C++','Java','Python')
      ) as t
left join client c
on t.client_id = c.id
where t.cnt >= 2
order by t.id