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

select user_id,
    min(date) first_buy_date,
    cnt
from t1
group by user_id