В SQL, что мне добавить ниже, чтобы усреднить глубину по годам?

Приведенный выше код работает нормально, но я вообще не могу понять следующий шаг. Далее я хочу, чтобы все местоположения были усреднены по годам, и вывести новый столбец с именем Annual_average.

Мой набор данных здесь: https://mgs-maine.opendata.arcgis.com/datasets/maine-snow-survey-data/explore?showTable=true.

SELECT  
  SITE_NAME,
  SURVEY_YEAR,
  AVG(DEPTH) AS snow_depth,
FROM `capstone-433319.maine_snow_survey.snow_data`
WHERE
  SURVEY_YEAR>=1984 AND
  DEPTH>=0 AND
  SITE_NAME IS NOT NULL
GROUP BY  
  SURVEY_YEAR,
  SITE_NAME
ORDER BY
  SITE_NAME
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте использовать оконную функцию для подсчета среднего значения по SITE_NAME.

SELECT  
  "SITE_NAME" ,
  "SURVEY_YEAR" ,
  AVG("DEPTH") AS snow_depth,
  round(AVG("DEPTH") over (partition by "SITE_NAME"),2) as annual_average
FROM maine_snow_survey_data
WHERE
  "SURVEY_YEAR">=1984 AND
  "DEPTH">=0 AND
  "SITE_NAME" IS NOT NULL
GROUP BY  
  "SURVEY_YEAR",
  "SITE_NAME",
  "DEPTH"
ORDER BY
  "SITE_NAME";

Я запустил этот код после обновления имени исходной таблицы, и он выдал самую странную ошибку: нет соответствующей подписи для оператора >= для типов аргументов: STRING, INT64. Поддерживаемая подпись: ЛЮБОЙ >= ЛЮБОЙ. Это странно, потому что до сих пор это не было проблемой. Нужно ли мне где-то привести что-то к другому типу данных?

Autumn Theriault 24.08.2024 20:22

пытаться,

AVG(DEPTH) OVER (PARTITION BY SITE_NAME, SURVEY_YEAR) AS annual_average

чтобы вычислить среднюю глубину для каждой уникальной комбинации SITE_NAME и SURVEY_YEAR.

SELECT  
  SITE_NAME,
  SURVEY_YEAR,
  AVG(DEPTH) AS snow_depth,
  AVG(DEPTH) OVER (PARTITION BY SITE_NAME, SURVEY_YEAR) AS annual_average
FROM Maine_Snow_Survey_Data
WHERE
  SURVEY_YEAR>=1984 AND
  DEPTH>=0 AND
  SITE_NAME IS NOT NULL
GROUP BY  
  SURVEY_YEAR,
  SITE_NAME
ORDER BY
  SITE_NAME

Другие вопросы по теме