Sql 博士后13周平均水平的移动
我试图构建一个视图,生成过去一年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
我的源数据包括一个日期、客户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