with t as(
select
t1.*
from order_info t1
inner join
(select user_id
from order_info
where
status='completed'
and product_name in('C++','Java','Python')
and date>'2025-10-15'
group by user_id
having count(id)>=2) t2
on t1.user_id=t2.user_id
where
t1.status='completed'
and t1.product_name in('C++','Java','Python')
and t1.date>'2025-10-15')
select
t3.source,count(t3.id) as cnt
from
(select
case
when t.is_group_buy='No' then c.name
else 'GroupBuy' end as source,
t.id
from t left join client c
on t.client_id=c.id
order by t.id) t3
group by t3.source
order by t3.source