with rowrank as
(
select *,
count(id) over(partition by user_id) as tcount,
row_number() over(partition by user_id) as trank
from order_info
where product_name in ('C++','Python','Java')
and status = 'completed'
and date > '2025-10-15')
select case when r.is_group_buy = 'Yes' then 'GroupBuy' else c.name end as source,
count(*) as cnt
from rowrank as r
left join client as c
on r.client_id = c.id
where user_id in
(select user_id from rowrank)
and product_name in ('C++','Python','Java')
and status = 'completed'
and date > '2025-10-15'
and r.tcount>=2
group by source
order by source asc;