MySQL: данные из определенной дневной группы по годам - PullRequest
2 голосов
/ 14 апреля 2019

У меня есть две колонки «дата» и «температура».Я хочу выбрать среднюю температуру между двумя конкретными датами, например, 1-7 апреля, сгруппированными по годам.Когда я использую этот запрос

select avg(temperature) from table where dayofyear(date) between 91 and 97 group by year(date)

появляются две проблемы.

  1. В високосные годы dayofyear для дней после 28 февраля имеет другое значение
  2. Когда я хочу выбрать среднеенапример, в период с 30 декабря по 5 января этот запрос: select avg(temperature) from table where dayofyear(date) between 364 and 5 group by year(date) возвращает 'null'.

В ответе на пункт 2 - еще одна проблема.Как получить данные, например, между 30 декабря (годом ранее) и 5 ​​января, сгруппированные по годам?

1 Ответ

1 голос
/ 14 апреля 2019

Для первого вопроса используйте функции SQL DAY() и MONTH():

SELECT AVG(temperature)
FROM table
WHERE DAY(date) between 1 and 7 AND MONTH(date) = 4
GROUP BY YEAR(date)

Для второй части вам, возможно, придется разделить ее на две части.

...