【发布时间】:2016-12-02 06:53:23
【问题描述】:
---总结---
我有三列:[visitorID]、[rank]、[numbers]。
在 BigQuery 中, 我想创建一个新列[计算], 这是 [数字] 和 [计算] 本身总和的一部分,包括指定条件。
我现在遇到的问题是“在 BigQuery 中,我无法创建需要计算的列,包括我正在创建的列”。 我不确定我的概念或想法是否合适, 也希望有更好的建议。
---详情---
*我的桌子:
一个包含三列的表:[visitorID]、[rank]、[numbers]。
*我需要创建的新列:
需要创建列[计算]。
*计算的定义:
按 [visitorID] 和 [rank] 排序后, [计算] 是
(i) 如果 [数字] = 0,那么 [计算] = 0 (ii) 如果 [numbers] 0,则将当前 [numbers] 值与之前的 [calculation] 数相加。 (iii) 基于(ii),如果总和大于30,则[计算] = 0,ELSE [计算]保持相同的总和值。
*我遇到的问题
我需要使用 BigQuery 来进行这种计算。 但是,我想出的是“窗口求和函数”,这似乎不是一个很好的解决方案。 我认为关键是“在 BigQuery 中,我无法创建需要计算的列,包括我正在创建的列”。
也就是说,我总是需要现有的值来创建一个新列。 我的示例查询如下,无法解决问题。 您还可以查看打印屏幕以了解问题所在。
请参阅下面的示例查询。
SELECT
visitorID,
rank,
numbers,
SUM(numbers) OVER (PARTITION BY visitorID ORDER BY rank) AS window_sum_current,
SUM(numbers) OVER (PARTITION BY visitorID ORDER BY rank ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS window_sum_prec1
FROM sample_table
*寻求建议
我想征求意见。 (1) 在 BigQuery 中,这个问题是否可以解决? (2)我缺乏什么方法或概念? (3) 解决 BigQuery 问题的更好方法是什么?
非常感谢。
【问题讨论】:
标签: mysql sql sql-server google-bigquery