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