【问题标题】:BigQuery Running SumBigQuery 运行总和
【发布时间】:2015-04-02 06:06:31
【问题描述】:

我在 BigQuery 中有一个数据集,用于记录在活动前对个人所做的捐赠。这是架构

  • first_name:STRING ---(这是捐赠者的名字)
  • payment_date:TIMESTAMP ---(捐赠日期)
  • 金额:STRING ---(捐赠金额)
  • donated_to_individual:STRING ---(收集捐款的参与者)
  • location:string ---(个人将参加的活动地点)
  • year_of_run:STRING ---(事件年份)

我正在尝试创建一个表格,从中我可以绘制出每个地点收到总计 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

谢谢!

【问题讨论】:

    标签: sql count distinct google-bigquery cumulative-sum


    【解决方案1】:

    我认为整体方法是合理的 - 分析函数(即 OVER 子句)是 SQL 中处理运行总和的正确机制。在你的 SQL 中唯一让我有点困扰的是你在 SELECT 中重命名了 donated_to_indivudual 列,并在 PARTITION BY 中使用了重命名的别名。虽然最后评估了 OVER 子句,但最好不要依赖被继承的别名,以提高可读性(和可移植性)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 2013-01-17
      • 1970-01-01
      • 2013-12-13
      • 2023-04-10
      • 1970-01-01
      • 2020-07-09
      • 2022-10-14
      相关资源
      最近更新 更多