我正在尝试使用LAG函数计算BigQuery中的28天移动总和.
这个问题的最佳答案
来自Felipe Hoffa表示您可以使用LAG功能.一个例子是:
SELECT
spend + spend_lagged_1day + spend_lagged_2day + spend_lagged_3day + ... + spend_lagged_27day as spend_28_day_sum,
user,
date
FROM (
SELECT spend,
LAG(spend, 1) OVER (PARTITION BY user ORDER BY date) spend_lagged_1day,
LAG(spend, 2) OVER (PARTITION BY user ORDER BY date) spend_lagged_2day,
LAG(spend, 3) OVER (PARTITION BY user ORDER BY date) spend_lagged_3day,
...
LAG(spend, 28) OVER (PARTITION BY user ORDER BY date) spend_lagged_day,
user,
date
FROM user_spend
)
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,而不必写出28行SQL!
我有一个简单的表格,下面有很多ID和日期。
ID Date
10R46 2014-11-23
10R46 2016-04-11
100R9 2016-12-21
10R91 2013-05-03
... ...
Run Code Online (Sandbox Code Playgroud)
我想制定一个查询,该查询针对日期(例如十天)的滚动时间范围计算唯一ID。这意味着对于每个日期,它应该给我该日期与10天后之间的唯一ID数。结果应如下所示。
UniqueTenDays Date
200 2014-11-23
324 2014-11-24
522 2014-11-25
532 2014-11-26
... ...
Run Code Online (Sandbox Code Playgroud)
如下所示,但是我意识到我需要应用WHERE子句并以某种方式计算每个Date的ID。
SELECT Date, COUNT(DISTINCT ID)
FROM T
WHERE Date BETWEEN DATE_SUB(Date, INTERVAL 10 DAY) AND Date
GROUP BY Date
ORDER BY Date
Run Code Online (Sandbox Code Playgroud)
提前致谢。