暂无图片
postgresql window用法
我来答
分享
柚子身上依
2024-02-19
postgresql window用法

image.png

请问这个window 函数 range between 1 preceding and 6 following 的计算逻辑是什么,sum(score) over w1 的结果是怎么计算出来的?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
lianR

这个 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
打赏 0
暂无图片
柚子身上依

image.png
我测试了一下和你说的稍微有点不一样,第一行的结果不是3,最后一行的结果也不是39,我理解你的意思了

暂无图片 评论
暂无图片 有用 0
打赏 0
lianR
2024-02-20
那这是解决了还是没解决呢
柚子身上依

这个是根据range between 1 preceding and 6 following 的范围是根据数字大小进行比较的,不是根据行号比较的,所以小于32的值没有,大于32的值33-38 没有,所以第一行的sum值是32,其他的行计算可以也是如此,但是这个90.5 在计算的时候应该是安装90来算的

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
postgreSQL 手动vaccum reindex 先后顺序是怎样的?
回答 1
在PostgreSQL中,手动运行VACUUM和REINDEX的顺序应该是VACUUM先于REINDEX。因为VACUUM的作用是清理已删除数据留下的空间,如果这些空间不被清理,REINDEX可能会将
postgreSQL 有没有事务自治?
回答 2
postgreSQL通过子事务来实现oracle的自治事务
postgresql时间日期类型的数据,使用时间类型和整数类型(时间戳)各有什么优缺点?
回答 1
已采纳
日期的人能看懂,维护可读好。unix时间戳要转换。
pg中在走索引下和全表扫描下,同样的delete语句,加锁有不同吗?
回答 1
锁没区别,就是持有锁的时间长短问题。
gp6.7.1 突然 psql 登录不上,一直卡住
回答 1
升级问题到:紧急故障
pg中执行计划的存储位置
回答 1
历史执行计划可以使用autoexplain插件,从数据库日志中查看,数据库字典没有。
pg中,同一个sql语句,如果在走索引和全表扫描情况下,加的锁是否相同呢?
回答 2
加的是一样的。可以参考下 表级锁 和 行级锁。最大的区别是 全表扫描加锁时间会更长。
pg_wal目录下面的文件能恢复数据库吗?
回答 1
已采纳
里面存的是wal日志,相当于oracle中的redo日志。可以在数据库出现崩溃的情况下可以用日志来恢复数据库
在一个高并发的PostgreSQL环境中,你观察到系统在高峰时段遇到了锁等待的问题。为了更好地理解和解决这个问题,下面哪个工具或特性最有助于分析和诊断事务间的锁竞争情况?
回答 1
已采纳
A.使用pglocks和pgstatactivity视图结合查询
怎么能让postgresql 使用多个CPU?
回答 1
多来几个这个的SQL,多开几个这样的窗口。你就会发现都用起来了。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~