# #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. Хорошо, понял. Спасибо за объяснение.