PostgreSQL 中是否实现了最后观察结转 (LOCF)?

Hel*_*lad 3 postgresql missing-data locf imputation

PostgreSQL 中是否实现了最后观察结转 (LOCF) 数据插补方法?
如果没有,我该如何实现这个方法?

Raf*_*ael 6

以下代码假设一个表tbl包含列ab(键)、t(时间)和v(locf 插补的值):

create or replace function locf_s(a float, b float)
returns float
language sql
as '
  select coalesce(b, a)
';

drop aggregate if exists locf(float);
CREATE AGGREGATE locf(FLOAT) (
  SFUNC = locf_s,
  STYPE = FLOAT
);

select a,b,t,v,
    locf(v) over (PARTITION by a,b ORDER by t) as v_locf
from tbl
order by a,b,t
;
Run Code Online (Sandbox Code Playgroud)

( SQLFiddle )


教程:“LOCF 和 PostgreSQL 的线性插补”