3

我有一个包含两列Bin_name(int) 和Count_in_this_bin(int)的简单表

我想将其转换为每个箱与所有箱中总计数的比率。

我在 Google BigQuery 中使用了以下查询:

SELECT count_in_bin/(SELECT SUM(count_in_bin) FROM [table])
FROM [table]

然后我得到

错误:查询失败错误:SELECT 子句中不允许子选择

谁能告诉我现在在 BigQuery 中进行这种简单划分的正确方法?

4

2 回答 2

4

BigQuery 旧版 SQL

#legacySQL
SELECT 
  count_in_bin, 
  RATIO_TO_REPORT(count_in_bin) OVER() AS ratio
FROM [project:dataset.table]

BigQuery 标准 SQL

#standardSQL
SELECT 
  count_in_bin, 
  count_in_bin / total AS ratio
FROM `project.dataset.table`, 
(SELECT SUM(count_in_bin) total FROM `project.dataset.table`)
于 2018-04-01T06:16:13.053 回答
3

您正在寻找窗口/分析函数。在标准 SQL 中,这将是:

SELECT count_in_bin / SUM(count_in_bin) OVER () 
FROM [table]

在旧版 SQL 中,您似乎需要一个子查询:

SELECT count_in_bin, count_in_bin / total_count_in_bin
FROM (SELECT count_in_bin, SUM(count_in_bin) OVER () as total_count_in_bin
      FROM [table]
     ) t
于 2018-04-01T03:00:30.870 回答