Google bigquery BigQuery:用于将聚合数据与唯一数据合并的SQL查询

Google bigquery BigQuery:用于将聚合数据与唯一数据合并的SQL查询,google-bigquery,Google Bigquery,我有一个小数据集,如下所示: 计算点计算如下: 分子=分数/总和(分数) Denomenator=IF(分数=0选择分数,否则选择分数)/SUM(分数) Computed Points=分子/外延分子 如何在BigQuery中为相同的对象编写Sql查询?下面是我的查询的样子: Select Date, Activity, Model (Score/Sum(Score))/(CASE Points WH

我有一个小数据集,如下所示:

计算点计算如下:

分子=分数/总和(分数)
Denomenator=IF(分数=0选择分数,否则选择分数)/SUM(分数)

Computed Points=分子/外延分子

如何在BigQuery中为相同的对象编写Sql查询?下面是我的查询的样子:

Select Date, Activity, Model (Score/Sum(Score))/(CASE Points 
                                              WHEN 0 THEN Score
                                              ELSE Points
                                              END)/(SUM(Points)) as `Computed_Points` from samples.test;
但这会产生一个错误,即:

选择列表表达式引用在[1:9]处既不分组也不聚合的列印象

有人能帮我实现这一点吗?

您想使用sum()作为窗口函数。。。类似

选择日期、活动、模型(分数/总和(分数)超过())/(案例分数
当0时得分
其他要点
结束)/(总和(点)超过())作为“计算点”
从样品中提取样品进行检测;
OVER()
表示窗口在整个表上是无界的

请参见

要将sum()用作窗口函数。。。类似

选择日期、活动、模型(分数/总和(分数)超过())/(案例分数
当0时得分
其他要点
结束)/(总和(点)超过())作为“计算点”
从样品中提取样品进行检测;
OVER()
表示窗口在整个表上是无界的


参见下面的

是关于BigQuery标准SQL的,是先前答案的一个清理版本

#standardSQL
select Date, Activity, Model, Score, Points, 
  if(Points = 0, 1, Score / Points)
  * sum(Points) over() / sum(Score) over() as `Computed_Points`  
from `samples.test`   
当应用于问题输出的样本数据时


以下是BigQuery标准SQL,是先前答案的清理版本

#standardSQL
select Date, Activity, Model, Score, Points, 
  if(Points = 0, 1, Score / Points)
  * sum(Points) over() / sum(Score) over() as `Computed_Points`  
from `samples.test`   
当应用于问题输出的样本数据时