遇到的问题:
with testdata as (
select 1 as id, 100 as val
union all
select 1 as id, 102 as val
union all
select 2 as id, 103 as val
)
select id,sum(id) over(order by id asc)
from testdata
id sum(CAST(id AS BIGINT)) OVER (ORDER BY id ASC NULLS FIRST RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1 2
1 2
2 4
sum over 不是可以按行计算吗,为什么id=1时,有重复值时,都会算进去的?
答案在下文:
Over:窗口函数(滑动聚合)_weixin_34162629的博客-优快云博客
滑动窗口是按>= 或者 <= 计算的
本文解析了SQL中sum() over()函数如何在窗口操作中处理重复行,重点讲解了窗口函数的滑动特性,以及它在'>=或<='范围内的计算原理。通过实例说明,帮助读者掌握窗口函数在聚合计算中的正确使用。
265

被折叠的 条评论
为什么被折叠?



