我在BigQuery中有一个数据集,记录了对导致某个事件的个人的捐赠。这是架构
我正在尝试创建一个表格,从中我可以为每个收到总计50美元或更多捐款的位置的个人payment_date绘制运行计数。
我下面的最佳尝试给我留下了一张桌子,如果他们当天收到捐款,可以计算筹集50美元或以上的人数:
SELECT
donated_to_id_b
,payment_date
,amount
,running_total
,IF(running_total>=50,'$50','NOPE') as reached_50_dollars
FROM
(SELECT
donated_to_individual as donated_to_id_b
,payment_date as payment_date
,amount
,sum(amount) OVER (PARTITION BY donated_to_id_b ORDER BY payment_date ASC, first_name) as running_total
FROM [robotic-charmer-726:bl_test_data.running_count_over_50_then_150]
WHERE year_of_run='2014')
我害怕采取完全错误的做法......所以任何帮助都会非常感激!
我创建了一个公共虚拟数据集,可在此处找到:bigquery.cloud.google.com/table/robotic-charmer-726:bl_test_data.running_count_over_50_then_150
谢谢!
答案 0 :(得分:1)
我认为整体方法是合理的 - 分析函数(即OVER子句)是SQL中处理运行总和的正确机制。在SQL中唯一困扰我的是你在SELECT中重命名了donated_to_indivudual列,并在PARTITION BY中使用了重命名的别名。虽然最后评估了OVER子句,但可读性(和可移植性)更好地不依赖于传递的别名。