Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql BigQuery:除以列中的值之和以查找比率_Sql_Google Bigquery_Legacy Sql - Fatal编程技术网

Sql BigQuery:除以列中的值之和以查找比率

Sql BigQuery:除以列中的值之和以查找比率,sql,google-bigquery,legacy-sql,Sql,Google Bigquery,Legacy Sql,我有一个简单的表,有两列Bin\u name(int)和Count\u in\u this\u Bin(int) 我想把它转换成每个箱子与所有箱子总数的比率 我在Google BigQuery中使用了以下查询: SELECT count_in_bin/(SELECT SUM(count_in_bin) FROM [table]) FROM [table] 然后我得到 错误:查询失败 错误:SELECT子句中不允许子选择 有谁能告诉我在BigQuery中进行这种简单除法的正确方法吗?您正在寻找窗

我有一个简单的表,有两列
Bin\u name
(int)和
Count\u in\u this\u Bin
(int)

我想把它转换成每个箱子与所有箱子总数的比率

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

SELECT count_in_bin/(SELECT SUM(count_in_bin) FROM [table])
FROM [table]
然后我得到

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


有谁能告诉我在BigQuery中进行这种简单除法的正确方法吗?

您正在寻找窗口/分析函数。在标准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

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`)

嗨,我试过这个,但它显示:错误:在解析表达式中缺少函数:1.50-1.57。这是传统的sql语法还是标准的?我刚刚用标准sql方言再试了一次,它可以工作,但在传统语法中不起作用。@Noob。真奇怪。
sum(count\u in\u bin)over()
在旧式SQL中工作。是除法抛弃了这个表达式。嗨,伙计,我使用的是传统的SQL,查询本身可以工作,但当我把它包括在除法中时就不行了。另外,在我勾选了BigQueyr中的遗留语法选项之后,我发现bigquery中的标准sql实际上支持子查询。而对我来说,最好的解决方案就是坚持使用bigquery中的标准sql选项。谢谢,是的,您提供的第二个版本有效,而第一个版本的总和在除法中失败。我想BigQuery可能希望查询更清晰?如果第一个表上有连接,标准sql方法仍然可以工作,对吗?如果构造正确,应该是:o)。尝试和如果问题-张贴新的单独问题,我们将提供帮助