sql - 使用 BigQuery 中的条件计算运行总计
问题描述
对不起,不好的话题……我需要计算一个运行总数,但需要在某个条件下重置总数(当预期达到 = 0 时)。我有这张桌子:
Date, Registrations, Expected Registrations, Expected reached
2020-03-01, 5, 4,1
2020-03-02, 7, 5,1
2020-03-03, 8, 6,1
2020-03-04, 2, 5,0
2020-03-05, 5, 4,1
2020-03-06, 7, 5,1
2020-03-07, 8, 6,1
2020-03-08, 2, 5,0
运行总计的预期结果 - 条件是当“预期达到”<> 0 运行总计时应计算。如果“预期达到”= 0,则运行总数应从 0 开始:
Date, Registrations, Expected Registrations, Expected Reached, Running Total
2020-03-01, 5, 4,1, 1
2020-03-02, 7, 5,1, 2
2020-03-03, 8, 6,1, 3
2020-03-04, 2, 5,0, 0
2020-03-05, 5, 4,1, 1
2020-03-06, 7, 5,1, 2
2020-03-07, 8, 6,1, 3
2020-03-08, 2, 5,0, 0
我不知道如何分区我的窗口功能来做到这一点。也许我之前必须创建一个中间计算,但我不确定。有什么建议么?
编辑:edit2:删除了我的“即时问题”。
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
SELECT * EXCEPT(grp),
SUM(Expected_reached) OVER(PARTITION BY grp ORDER BY `date`) Running_Total
FROM (
SELECT *, COUNTIF(Expected_reached = 0) OVER(ORDER BY `date`) grp
FROM `project.dataset.table`
)
推荐阅读
- java - Spring boot - 带有返回 id 的 Jdbc 批量插入
- asp.net-core - 对于带有 API 控制器的 .NET Standard 库,我需要哪个 NuGet 包
- sql - SQL 查询 - 计算上一年的销售额
- ruby - 不能使用包含?在方法中使用实例变量
- azure - 用于安全字符串数组的 ARM 模板
- python - 运行 python 文件时 Anaconda 崩溃 - Mac OS
- javascript - 单击后允许按钮数组加载音频元素?
- java - “StackOverFlowError”在给定 3 个节点为空的情况下构建树
- amazon-ec2 - ssh 登录我的 EC2 实例时使用哪个密钥?
- c - 服务器-客户端 API 中的 Rio 函数