第一步,用where筛选购买状态、课程等,用窗口函数生成用户下单次数及下单日期排序,即
WITH RankedOrders AS (  
    SELECT  
        user_id,  
        date,  
        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 IN ('C++', 'Python', 'Java')  
)  第二步,分别筛选满足以上条件的第一天日期和第二天日期,并将两个表进行链接,最后从链接的结果中用select显示first_buys.user_id,  first_buys.date AS first_buy_date,   second_buys.date AS second_buy_date,first_buys.cnt,  
    即
SELECT  
    first_buys.user_id,  
    first_buys.date AS first_buy_date,  
    second_buys.date AS second_buy_date,
    first_buys.cnt
FROM  
    (SELECT user_id, date, cnt FROM RankedOrders WHERE rn = 1 AND cnt >= 2) AS first_buys  
LEFT JOIN  
    (SELECT user_id, date, cnt FROM RankedOrders WHERE rn = 2 AND cnt >= 2) AS second_buys  
ON  
    first_buys.user_id = second_buys.user_id  
ORDER BY  
    first_buys.user_id;