Google bigquery BigQuery:同一语句中的多个查询SQL查询

Google bigquery BigQuery:同一语句中的多个查询SQL查询,google-bigquery,bigquery-standard-sql,Google Bigquery,Bigquery Standard Sql,我正在研究不同温度下设备的功率和速度之间的关系。我可以很容易地为一个温度范围(例如2C到5C)创建SQL,现在我想看看如何在一个查询中使用不同的温度范围运行相同的查询。我希望能够通过dataconnector从Google Sheets中运行代码,该位工作正常,然后使用图表 我查看了各种联合,但我在这里发现的联合不适合我的用例 SELECT Power, AVG (Speed) AS Speed_freezing_2 FROM `gcp_project.dataset.table` WHERE

我正在研究不同温度下设备的功率和速度之间的关系。我可以很容易地为一个温度范围(例如2C到5C)创建SQL,现在我想看看如何在一个查询中使用不同的温度范围运行相同的查询。我希望能够通过dataconnector从Google Sheets中运行代码,该位工作正常,然后使用图表

我查看了各种联合,但我在这里发现的联合不适合我的用例

SELECT
Power,
AVG (Speed) AS Speed_freezing_2
FROM `gcp_project.dataset.table`
WHERE Power > 49 AND Power < 950 AND Temperature <= 2
GROUP BY Power ORDER BY Power

不知道图像是否可以在这里工作,但我想说的是:

您可以在同一个查询中进行多次平均,并将过滤器包含在每个平均值中的一个案例中。类似这样:

SELECT
Power,
AVG (case when Temperature<=2 then Speed end) AS Speed_freezing_2
AVG (case when Temperature>2  and Temperature<=5 then Speed end) AS Speed_cold_2_5
.......
FROM `gcp_project.dataset.table`
WHERE Power > 49 AND Power < 950
GROUP BY Power 
ORDER BY Power

您可以在同一个查询中进行多个平均,并在每个平均值内的一个案例中包含过滤器。类似于以下内容:

SELECT
Power,
AVG (case when Temperature<=2 then Speed end) AS Speed_freezing_2
AVG (case when Temperature>2  and Temperature<=5 then Speed end) AS Speed_cold_2_5
.......
FROM `gcp_project.dataset.table`
WHERE Power > 49 AND Power < 950
GROUP BY Power 
ORDER BY Power

下面是BigQuery标准SQL的示例

#standardSQL
WITH ranges AS (
  SELECT 0 start, 2 finish UNION ALL
  SELECT 2, 5 UNION ALL
  SELECT 5, 10 UNION ALL
  SELECT 10, 20 UNION ALL
  SELECT 20, 50
)
SELECT start, finish, Power, AVG (Speed) avg_speed
FROM ranges, `project.dataset.table`
WHERE Power > 49 AND Power < 950
AND Temperature > start AND Temperature <= finish
GROUP BY start, finish, Power
ORDER BY Power, start

下面是BigQuery标准SQL的示例

#standardSQL
WITH ranges AS (
  SELECT 0 start, 2 finish UNION ALL
  SELECT 2, 5 UNION ALL
  SELECT 5, 10 UNION ALL
  SELECT 10, 20 UNION ALL
  SELECT 20, 50
)
SELECT start, finish, Power, AVG (Speed) avg_speed
FROM ranges, `project.dataset.table`
WHERE Power > 49 AND Power < 950
AND Temperature > start AND Temperature <= finish
GROUP BY start, finish, Power
ORDER BY Power, start

我发现这对我来说是最好的方法-谢谢!忘了提到,在我创建Sheets/BigQuery连接和命令之后,我做了一个pivot,然后将温度放入列中,我使用速度作为值。我发现这是对我来说最好的方法-谢谢!忘了提到,在创建Sheets/BigQuery连接和命令之后,我做了一个pivot,然后将温度放入列中,我使用速度作为值。我已经离线几天了。我现在接受了一个回答,我已经离线几天了。我现在接受了一个答案