如何编写 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?