子查询中使用窗口函数
牛客的课程订单分析(五)
https://www.nowcoder.com/practice/348afda488554ceb922efd2f3effc427
SELECT user_id, MIN(date), MAX(date), cnt FROM( SELECT *, ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY date) rk, COUNT(*) OVER(PARTITION BY user_id) cnt FROM order_info WHERE status = 'completed' AND date > '2025-10-15' AND product_name IN ('C++', 'JAVA', 'Python') )t1 WHERE rk <= 2 AND cnt >= 2 GROUP BY user_id ORDER BY user_id
在子查询中使用两次窗口函数,第一次使用ROW_NUMBER(),目的为提取出前两次的购买记录,则date的最小值对应第一次购买,最大值对应第二次购买;第二次使用COUNT(*),目的为筛选出总购买次数在两次以上的记录。