Получить AVG Temp по месяцам, используя BigQuery?

С использованием 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 год)?

1 ответ

Решение

Для этого следует использовать функции подстановки таблиц, как показано ниже

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
Другие вопросы по тегам