BigQuery Legacy SQL(子查询?)中占总数的百分比

Posted

技术标签:

【中文标题】BigQuery Legacy SQL(子查询?)中占总数的百分比【英文标题】:Percentage to total in BigQuery Legacy SQL (Subqueries?) 【发布时间】:2016-06-24 12:59:56 【问题描述】:

我不明白如何在 BigQuery Legacy SQL 中计算占总数的百分比。 所以,我有一张桌子:

ID | Name  | Group | Mark
1  | John  |  A    |  10
2  | Lucy  |  A    |  5
3  | Jane  |  A    |  7
4  | Lily  |  B    |  9
5  | Steve |  B    |  14
6  | Rita  |  B    |  11

我想这样计算百分比:

ID | Name  | Group | Mark | Percent
1  | John  |  A    |  10  | 10/(10+5+7)=45%
2  | Lucy  |  A    |  5   | 5/(10+5+7)=22%
3  | Jane  |  A    |  7   | 7/(10+5+7)=33%
4  | Lily  |  B    |  9   | 9/(9+14+11)=26%
5  | Steve |  B    |  14  | 14/(9+14+11)=42%
6  | Rita  |  B    |  11  | 11/(9+14+11)=32%

我的桌子对我来说很长(300 万行)。 我认为我可以使用子查询来做到这一点,但在 SELECT 中我不能使用子查询。 有人知道怎么做吗?

【问题讨论】:

【参考方案1】:
SELECT 
  ID, Name, [Group], Mark, 
  RATIO_TO_REPORT(Mark) OVER(PARTITION BY [Group]) AS percent 
FROM YourTable

查看更多关于RATIO_TO_REPORT的信息

【讨论】:

以上是关于BigQuery Legacy SQL(子查询?)中占总数的百分比的主要内容,如果未能解决你的问题,请参考以下文章

Google Bigquery Legacy SQL - 如果没有返回结果,如何返回 null 或零?

Google Bigquery Legacy SQL - 如何将周数设置为星期一?

Bigquery Standard Sql 等效于 Legacy Sql 中的 LAST()

如何通过 BigQuery 连接将 use_legacy_sql=False 传递给 Airflow DAG 中的 SqlSensor?

如何在 Bigquery Legacy SQL 中创建真正的函数

BigQuery SQL:将视图 A 中的子查询作为嵌套表嵌入视图 B