题解 | 牛客的课程订单分析(三)

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

https://www.nowcoder.com/practice/4ae8cff2505f4d7cb68fb0ec7cf80c57

select id,user_id,product_name,status,client_id,date
from (select id,user_id,product_name,status,client_id,date,count(*)over(partition by user_id) as rn
from order_info
where status='completed' and date>'2025-10-15'
and product_name in('C++','Java','Python')
) sub
where rn>=2
order by id

刚开始我用的是 count(*)和group by 分组,但id,user_id,product_name,status,client_id,date是非聚合列,不能一起使用

COUNT(*):普通聚合函数,用于计算整个表或分组的行数,必须与 GROUP BY 子句一起使用,否则不能与非聚合列一起使用。

COUNT(*) OVER (...):窗口函数,用于在一组行上执行聚合计算,同时保留每一行的细节,可以与非聚合列一起使用,不会违反 ONLY_FULL_GROUP_BY 模式。

全部评论

相关推荐

03-28 16:43
佛山大学 Java
在度假的布拉德很想退...:你这实习项目写的也太简单了吧?业务加技术难点要体现出来呀,你这写的都不知道具体干了什么
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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