【窗口函数+聚合函数的使用误解】
在评论区
@牛客786785856号 :
大佬好,我有个疑问,窗口函数聚合的用法不是累计的效果么,为啥这题会出现聚合的效果😮
很多人认 窗口函数+聚合函数 是累计的效果。-----这句话在加了order by条件时候是正确的,但若不加order by条件其实和group by+聚合函数时聚合函数想要达到的效果一致。
【高能预警】知乎上有些说法也是错误的
@https://zhuanlan.zhihu.com/p/92654574
《通俗易懂的学会:SQL窗口函数通俗易懂的学会:SQL窗口函数》
该文章中潜台词指出 聚合函数+窗口函数 就是累计的效果
文中原话如下:
这样使用窗口函数有什么用呢?
请在这里输入引用内容
聚合函数作为窗口函数,可以在每一行的数据里直观的看到,截止到本行数据,统计数据是多少(最大值、最小值等)。同时可以看出每一行数据,对整体统计数据的影响。
【个人建议】在遇到没使用过的函数时最好先看官方文档,网上资料质量不一定靠得住。
【参考官方文档】
https://www.postgresql.org/docs/current/tutorial-window.html
本题@wengJJ采用窗口函数+聚合函数的解法是正确的,如下:
select t.id,t.user_id,t.product_name,t.status,t.client_id,t.date from (select *, count(*) over(partition by user_id) as num from order_info where product_name in ('C++','Java','Python') and status='completed' and date >'2025-10-15')t where t.num>=2 order by t.id