第一步,用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;