2016-05-27 6 views
1

Используя набор данных fh-bigquery:weather_gsod, я хочу получить некоторые ежемесячные метеорологические данные для всех станций в конкретной стране. А именно, я хочу ежемесячную avg temp, ежемесячную avg max и ежемесячную avg min, с 1929 года по настоящее время.Извлеките AVG Temp by Month используя BigQuery?

Это то, что я написал, чтобы получить то, что мне нужно из одной таблицы, 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 год)?

ответ

2

Вы должны использовать 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 
+0

Отлично. Спасибо! Быстрое наблюдение: если я хочу, чтобы год возвращался с данными, было бы правильно написать это: 'GROUP BY stn, year, mo', правильно? – iTurki

+0

да, и вам нужно будет добавить 'year' в' SELECT' также –