select user_id, date as first_buy_date, cnt
from (
    select *, 
    count(1) over (partition by user_id) as cnt,
    row_number() over (partition by user_id order by date) as rn
    from order_info
    where date>'2025-10-15'
    and product_name in ('C++', 'Java', 'Python')
    and status='completed'
) temp
where cnt>=2 and rn=1
order by user_id