2024-02-19
postgresql window用法
5M
请问这个window 函数 range between 1 preceding and 6 following 的计算逻辑是什么,sum(score) over w1 的结果是怎么计算出来的?
我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
5M
请问这个window 函数 range between 1 preceding and 6 following 的计算逻辑是什么,sum(score) over w1 的结果是怎么计算出来的?
这个 window 函数 range between 1 preceding and 6 following 的计算逻辑是对每一行的数据,计算它前面一行到后面六行的数据的总和。具体来说,对于每一行,都会将其自身的值,前面一行的值,以及后面六行的值相加,得到一个新的值。这个新的值就是sum(score) over w1的结果。
例如,假设我们有一个名为 score 的列,其值为1, 2, 3, 4, 5, 6, 7, 8, 9。那么,sum(score) over w1 的结果将会是:
- 对于第一行,只有1和2(因为没有前一行,所以只计算自身和后一行),所以结果是3。
- 对于第二行,有1, 2, 3, 4, 5, 6, 7, 8(前一行,自身,和后六行),所以结果是36。
- 对于第三行,有2, 3, 4, 5, 6, 7, 8, 9(前一行,自身,和后六行),所以结果是44。
- 以此类推。
需要注意的是,如果在数据的开始或结束部分,没有足够的行来计算完整的窗口,那么将只计算可用的行。例如,在上述例子中,对于最后一行,只有4, 5, 6, 7, 8, 9(前一行和自身,因为没有后续的行),所以结果是39。
评论
有用 2

我测试了一下和你说的稍微有点不一样,第一行的结果不是3,最后一行的结果也不是39,我理解你的意思了
评论
有用 0
墨值悬赏