Postgresql 前面的范围仅支持无界
我想在一个时间窗口内尝试avg()聚合 sql代码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
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