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)。尝试和如果问题-张贴新的单独问题,我们将提供帮助