Postgresql 前面的范围仅支持无界

Postgresql 前面的范围仅支持无界,postgresql,Postgresql,我想在一个时间窗口内尝试avg()聚合 sql代码 select user_id,timestamp avg(y) over(range between '5 second' preceding and '5 second' following), from A 但是系统报告错误 RANGE PRECEDING is only supported with UNBOUNDED 是否有任何方法可以实现avg()窗口函数的10秒窗口 窗口函数的帧宽度为当前行时间戳之前的n秒和当前行时间戳之后的m

我想在一个时间窗口内尝试avg()聚合 sql代码

select
user_id,timestamp
avg(y) over(range between '5 second' preceding and '5 second' following),
from A
但是系统报告错误

RANGE PRECEDING is only supported with UNBOUNDED
是否有任何方法可以实现avg()窗口函数的10秒窗口

窗口函数的帧宽度为当前行时间戳之前的n秒和当前行时间戳之后的m秒

是的。。。PostgreSQL的窗口函数尚未实现范围

我曾经遇到过很多情况,它们可能会很有用,但要实现它们需要大量的工作,而且时间有限

是否有任何方法可以实现avg()窗口函数的10秒窗口

您将需要使用左连接生成_series(如果合适,还需要聚合),将范围转换为规则的行序列,在没有数据的地方插入空行,并在一秒钟内将多个数据合并为一个值,其中有多个值


然后在左侧连接和聚合的数据上执行
(前面的第n行…
窗口,以获得运行平均值。

什么是“10秒窗口”?时间从何而来?@zerkms窗口函数帧的范围很宽,从当前行时间戳之前的n秒到当前行时间戳之后的m秒,请参见更新的问题谢谢:)我知道窗口函数的帧是什么。我不明白你的时间是从哪里来的。假设你吵架了。你从哪里得到时间?“当前行的时间戳”--这是什么?我更新的@zerkms表
RANGE
中的时间戳列仅适用于行计数,不幸的是,您无法引用行中的任何值。因此,根据您的原始任务,您可能会使用
内部联接
+
分组方式
 RANGE PRECEDING is only supported with UNBOUNDED