mysql - 组合两个不同的数据集时子查询不返回数据

标签 mysql sql oracle oracle11g google-bigquery

我正在尝试将两个不同的数据集与 Google BigQuery 上的子查询结合起来。

当我单独使用子查询时,它会运行并返回每年的总平均温度。但是,当我将查询合并为子查询时,它只返回所有规定期间的平均温度,而不是每年的平均温度。

我的代码:

#standardSQL
SELECT t1.year, gas_fuel, liquid_fuel, solid_fuel, cement, annual_anomaly, (SELECT avg(temp)
FROM `bigquery-public-data.noaa_gsod.gsod*`
WHERE year > '1982') as average_temperature
FROM `cs779-term-project.CO2_FossilFuel.GlobalEmissions` as t1
JOIN `cs779-term-project.CO2_FossilFuel.SeaLevels` as t2
on t1.year = t2.year
Where t1.year > 1982
ORDER BY t1.year ASC;

此外,当我在子查询中添加 GROUP BY year 时,它会显示以下错误:

Error: Scalar subquery produced more than one element

谢谢!

最佳答案

如果你需要年的平均温度,那么你需要在子查询条件中使用查询中的年份:

SELECT t1.year, gas_fuel, liquid_fuel, solid_fuel, cement, annual_anomaly
, (SELECT avg(temp)
  FROM `bigquery-public-data.noaa_gsod.gsod*`
  WHERE year = t1.year) as average_temperature
FROM `cs779-term-project.CO2_FossilFuel.GlobalEmissions` as t1
JOIN `cs779-term-project.CO2_FossilFuel.SeaLevels` as t2
on t1.year = t2.year
Where t1.year > 1982
ORDER BY t1.year ASC;

关于mysql - 组合两个不同的数据集时子查询不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49908316/

相关文章:

sql - 在数据库重构期间映射 ids 的最简单方法

sql - Oracle:having 子句中的命名子查询

mysql - php mysql连接3个表

javascript - 用 * 搜索重新定义字符串的一部分

mysql - 并非所有参数都在 SQL 语句中使用

mysql - 如何将3个表与其他表中具有最大值的表组合起来

sql - 社交网络数据库架构?

mysql - 根据另一个引用字段限制字段的值

java - 如何回滚除异常之外的所有内容以存储在表中

php - 如何在php中将字符串转换为RAW(Oracle)?