小编bkn*_*ght的帖子

SQL/BIGQUERY 日期中存在间隙的运行平均值

我在 BigQuery/SQL 中的移动平均值方面遇到问题,我有表“SCORES”,我需要在使用用户对数据进行分组时制作 30 天的移动平均值,问题是我的日期不是连续的,例如存在间隙在里面。

下面是我当前的代码:

SELECT user, date,
      AVG(score) OVER (PARTITION BY user ORDER BY date)
FROM SCORES;
Run Code Online (Sandbox Code Playgroud)

我不知道如何将日期限制添加到该行中,或者这是否可能。

我当前的表如下所示,但当然有更多的用户:

user    date    score
AA  13/02/2018  2.00
AA  15/02/2018  3.00
AA  17/02/2018  4.00
AA  01/03/2018  5.00
AA  28/03/2018  6.00
Run Code Online (Sandbox Code Playgroud)

然后我需要它变成这样:

user    date    score   30D Avg
AA  13/02/2018  2.00    2.00
AA  15/02/2018  3.00    2.50
AA  17/02/2018  4.00    3.00
AA  01/03/2018  5.00    3.50
AA  28/03/2018  6.00    5.50
Run Code Online (Sandbox Code Playgroud)

在最后一行中,由于日期(向后最多 30D),它仅向后测量一个,有什么方法可以在 SQL 中实现这一点,还是我要求太多?

sql average moving-average google-bigquery rolling-average

3
推荐指数
1
解决办法
1487
查看次数