首页 > 解决方案 > 如何在 BigQuery 中累积前 7 天的值?

问题描述

在 BigQuery SQL 中,如何累积某个时期的值?

我有一张这样的桌子。我想获得每行前 7 天值的总和。

请让我知道对此的查询。

日期 价值
2021-05-10 3
2021-05-11 1
2021-05-14 2
2021-05-15 0
2021-05-16 3
2021-05-17 1
2021-05-18 1
2021-05-20 1
2021-05-23 1
2021-05-28 1
... ...

预期的

日期 价值 acc_7
2021-05-10 3 3 (05-04 ~ 05-10的总和)
2021-05-11 1 4 (05-05 ~ 05-11的总和)
2021-05-14 2 6(05-08~05-14总和)
2021-05-15 0 6(05-09~05-15总和)
2021-05-16 3 9(05-10~05-16之和)
2021-05-17 1 7(05-11~05-17的总和)
2021-05-18 1 7(05-12~05-18之和)
2021-05-20 1 8 (05-14 ~ 05-20的总和)
2021-05-23 1 4(05-17~05-23之和)
2021-05-28 1 2(05-22~05-28之和)
... ... ...

标签: sqlgoogle-bigquery

解决方案


您可以使用range窗框,但您需要将日期转换为天数。

select t.*,
       sum(value) over (order by unix_date(date)
                        range between 6 preceding and current row
                       ) as value_7
from t;

推荐阅读