Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 博士后13周平均水平的移动_Sql_Postgresql - Fatal编程技术网

Sql 博士后13周平均水平的移动

Sql 博士后13周平均水平的移动,sql,postgresql,Sql,Postgresql,我试图构建一个视图,生成过去一年13周的移动平均值 我的源数据包括一个日期、客户ID和整数,基本上我想对包括当前值在内的13个先前值在过去52周内进行平均。完成后,我希望有一个表,其中包含日期、每个客户ID以及该客户的13周平均值。将Postgres升级到9.1后,窗口功能在这方面发挥了很大作用: SELECT vs.weekending, cs.slinkcust AS customer, cs.slinkid AS id, round(avg(vs.maxattached) OVER (PA

我试图构建一个视图,生成过去一年13周的移动平均值


我的源数据包括一个日期、客户ID和整数,基本上我想对包括当前值在内的13个先前值在过去52周内进行平均。完成后,我希望有一个表,其中包含日期、每个客户ID以及该客户的13周平均值。

将Postgres升级到9.1后,窗口功能在这方面发挥了很大作用:

SELECT vs.weekending,
cs.slinkcust AS customer,
cs.slinkid AS id,
round(avg(vs.maxattached) OVER (PARTITION BY cs.slinkid ORDER BY vs.weekending DESC ROWS BETWEEN 0 PRECEDING AND 12 FOLLOWING), 2) AS rolling_conc_avg,
round(avg(vs.totsessions) OVER (PARTITION BY cs.slinkid ORDER BY vs.weekending DESC ROWS BETWEEN 0 PRECEDING AND 12 FOLLOWING), 2) AS rolling_sess_avg,
dense_rank() OVER (ORDER BY vs.weekending) AS week_number 
FROM cfg_slink cs
     JOIN view_statslink vs ON cs.slinkid = vs.id
  WHERE vs.weekending >= (now() - '364 days'::interval) AND cs.disabled = 0
  GROUP BY vs.weekending, cs.slinkid, vs.maxattached, vs.totsessions
  ORDER BY vs.weekending DESC, cs.slinkcust;

仅供参考,我正在运行Postgres 8.1