窗口函数分别给出成功购买的次序r 以及总次数cnt。
题目需要的是user_id 第一次和第二次购买的日期 及cnt
故r<=2中 min(date)为第一次 max(date)为第二次

SELECT
a.user_id,
min(a.date) first_buy_date,
max(a.date) second_buy_date,
a.cnt
FROM
(
SELECT
*,
ROW_NUMBER() over(partition by user_id order by date) r,
count(product_name) over(partition by user_id) cnt
from order_info
where status='completed'
and date>'2025-10-15'
and product_name in('C++','Java','Python')
)a
where a.r<=2 and a.cnt>=2
group by 1
order by 1