子查询中使用窗口函数

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

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

全部评论

相关推荐

07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
07-23 11:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务