子查询中使用窗口函数

牛客的课程订单分析(五)

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(*),目的为筛选出总购买次数在两次以上的记录。

全部评论

相关推荐

不讲武德的黑眼圈很能干:接好运
点赞 评论 收藏
分享
有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务