with flitered_order_info as (
    select
        *,
        count(*) over (partition by user_id) as cnt
    from 
        order_info
    where
        date >= '2025-10-15'
    and 
        product_name in ('C++','Python','Java')
    and 
        status = 'completed'
)

select
    t.id,
    t.is_group_buy,
    c.name as client_name
from (
    select
        id,
        client_id,
        is_group_buy
    from 
        flitered_order_info
    where 
        cnt >= 2
) as t
left join 
    client as c
on 
    t.client_id = c.id
order by 
    t.id