Почему я получаю ошибку при запуске второго кода

# #sql #google-bigquery #bigquery-public-datasets

Вопрос:

Я использую Google Bigquery для запроса данных из общедоступного набора данных new_york_citibike. Я хочу получить доступные num_bikes и среднее количество велосипедов, доступных на station_id. Запрос таков:

 SELECT station_id, num_bikes_available (SELECT AVG(num_bikes_available) AS average_bikes_available FROM bigquery-public-data.new_york_citibike.citibike_stations ) FROM bigquery-public-data.new_york_citibike.citibike_stations  

Второй запрос таков:

 SELECT station_id, num_bikes_available, AVG(num_bikes_available) AS average_bikes_available FROM bigquery-public-data.new_york_citibike.citibike_stations GROUP BY station_id  

Ошибка, которую я получил, — «Выберите столбец ссылок на выражение списка num_bikes_available, который не сгруппирован и не агрегирован«. Почему это так, что я должен агрегировать num_bikes_available во втором случае.

Комментарии:

1. предоставьте примерные данные и желаемый результат

Ответ №1:

вам нужно предоставить примерные данные, но я думаю, что это то, что вы пытаетесь сделать :

 SELECT station_id  , sum(num_bikes_available) as num_bikes_available  , avg(num_bikes_available) AS average_bikes_available FROM bigquery-public-data.new_york_citibike.citibike_stations GROUP BY station_id  

Комментарии:

1. Да, точно, но почему я не должен был этого делать в первом примере.

2. @aryanbarnwal, потому что в вашем первом запросе вы используете отдельный запрос (в качестве подзапроса) для вычисления среднего значения. кроме того , таким образом , вы показываете среднее значение() общих данных в своей таблице, а не среднее значение на станцию

3. Хорошо, понял. Спасибо за объяснение.