如何编写 BigQuery/SQL 查询以将一个表中的列的平均值与第二个/另一个表中的列相除

Posted

技术标签:

【中文标题】如何编写 BigQuery/SQL 查询以将一个表中的列的平均值与第二个/另一个表中的列相除【英文标题】:How to write BigQuery/SQL query to divide average of a column in one table from column in second/another table 【发布时间】:2020-09-17 08:43:39 【问题描述】:

我正在从以下两个表中寻找 SQL 查询与 SELECT 的 Value1/Value2 比率..

表_1: -------

 id  Type  Count          
            
1.   A.      2            
2.   B.      3             
3.   A.      1
4.   A.      4
5.   B.      2

表_2:

id  Type   Max 
1.   A.     10
2.   B.     10

where Value1 = SELECT  AVG(Count) FROM Table_1 GROUP BY Type

and   Value2 = SELECT Max FROM Table_2.

我试过下面的查询

WITH table1 (SELECT AVG(Count) as avg_cnt...), 
     table2 (SELECT Max as max_val....)
     SELECT table1.avg_cnt/table2.max_val
     FROM ..

但它不起作用。

【问题讨论】:

你的预期输出是什么 【参考方案1】:

你可以只聚合和计算:

select t2.type, avg(t1.count) / t2.max
from table1 t1 join
     table2 t2
     on t1.type = t2.type
group by t2.type, t2.max;

不需要子查询或 CTE。

【讨论】:

【参考方案2】:

您可以尝试使用join

Select cnt/maxval
from
(
select type,avg(count) cnt 
from table1
group by type
)A join table2 on table1.type=table2.type

【讨论】:

以上是关于如何编写 BigQuery/SQL 查询以将一个表中的列的平均值与第二个/另一个表中的列相除的主要内容,如果未能解决你的问题,请参考以下文章

如何编写执行预定义查询以将数据加载到工作表中的办公脚本?

如何从具有字典列表的表中查询,仅针对某些键 (BigQuery) SQL

如何将 BigQuery SQL 查询结果转换为 Spark DataFrame?

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

如何编写查询以将两个帐户及其活动日志合并为一个? [关闭]

如何编写 AWS Glue 脚本以将新数据插入 Redshift 表