select source, count(1) as cnt
from (
    select case when is_group_buy='Yes' then 'GroupBuy' else name end as source
    from (
        select user_id, client_id, is_group_buy, name,
        count(1) over (partition by user_id) as cnt
        from order_info a left join client b on a.client_id=b.id
        where date>'2025-10-15'
        and status='completed'
        and product_name in ('C++', 'Java', 'Python')
    ) temp
    where cnt>=2
) temp2
group by source
order by source