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