【问题标题】:Retrieve AVG Temp by Month using BigQuery?使用 BigQuery 按月检索 AVG Temp?
【发布时间】:2016-09-25 16:25:46
【问题描述】:

使用fh-bigquery:weather_gsod 数据集,我想检索特定国家/地区所有站点的一些月度天气数据。即,我想要从 1929 年至今的每月平均温度、每月平均最高温度和每月平均最低温度。

这是我为从一张表中检索所需内容而写的,2015 年。我得到的数据似乎是正确的:

SELECT stn, FIRST(name) AS station_name, mo, (AVG(temp)-32)*0.5556 AS temp, (AVG(max)-32)*0.5556 AS max, (AVG(min)-32)*0.5556 AS min
FROM [fh-bigquery:weather_gsod.gsod2015] gsod
JOIN [fh-bigquery:weather_gsod.stations2] stations
ON gsod.wban=stations.wban AND gsod.stn=stations.usaf
WHERE country='SA' 
GROUP BY stn, mo
ORDER BY mo

假设这个查询确实检索到了我需要的信息,我该如何重写它以包含整个范围(1929 到 2016)?

【问题讨论】:

    标签: sql google-bigquery weather


    【解决方案1】:

    您应该使用Table wildcard functions,如下所示

    SELECT 
      stn, 
      FIRST(name) AS station_name, 
      mo, 
      (AVG(temp)-32)*0.5556 AS temp, 
      (AVG(max)-32)*0.5556 AS max, 
      (AVG(min)-32)*0.5556 AS min
    FROM (
      SELECT * FROM
      (TABLE_QUERY([fh-bigquery:weather_gsod], 'table_id CONTAINS "gsod"')) 
    ) gsod
    JOIN [fh-bigquery:weather_gsod.stations2] stations
    ON gsod.wban=stations.wban AND gsod.stn=stations.usaf
    WHERE country='SA' 
    GROUP BY stn, mo
    ORDER BY mo
    

    【讨论】:

    • 优秀。谢谢!快速跟进:如果我想用数据返回年份,这样写是正确的:GROUP BY stn, year, mo,对吧?
    • 是的,您还需要将year 添加到SELECT
    猜你喜欢
    • 1970-01-01
    • 2016-12-22
    • 2018-08-10
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多