sql - 如何在 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之和) |
... | ... | ... |
解决方案
您可以使用range
窗框,但您需要将日期转换为天数。
select t.*,
sum(value) over (order by unix_date(date)
range between 6 preceding and current row
) as value_7
from t;
推荐阅读
- visual-studio - Xamarin 构建在 Windows docker 容器内失败(_ComputeAndroidResourcePaths 失败)
- video - 如何在 twilio 视频中创建/检索更详细的参与者信息?
- excel - 更改excel中的数字格式
- css - 在网站主页的特色图片内移动帖子标题
- iis - URL 重写 - 检查 https 并添加 www
- mysql - 通过取 MySQL 中的最低列值“合并”两行
- windows - 无法在 Windows 上运行 scala
- python - 绘图和输入如何在 for 循环中工作?
- google-apps-script - Google 应用程序脚本:如何从电子表格列中填充下拉列表
- laravel - Laravel 通知,实时显示通知的问题