SELECT x.user_id, min(date) AS "first_buy_date", max(date) AS "second_buy_date", x.cnt FROM (SELECT oi.id, oi.user_id, oi.date, ROW_NUMBER()over(partition by oi.user_id order by oi.date)mm, count(*)over(partition by oi.user_id) cnt FROM order_info oi where datediff(oi.date,"2025-10-15")>0 and oi.status ="completed" and oi.product_name in("C++","Java","Python"))x WHERE x.cnt>=2 and x.mm<=2 group by x.user_id,x.cnt order by x.user_id