【问题标题】:MySQL: Data from specific day group by yearMySQL:每年特定日期组的数据
【发布时间】:2019-09-04 16:06:57
【问题描述】:

我有两列“日期”和“温度”。我想选择两个特定日期之间的平均温度,例如4 月 1 日至 7 日按年份分组。 当我使用这个查询时

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

出现两个问题。

  1. 在闰年中,2 月 28 日之后的每一天都有不同的值
  2. 当我想选择平均值时,例如在 12 月 30 日至 1 月 5 日期间,此查询:select avg(temperature) from table where dayofyear(date) between 364 and 5 group by year(date) 返回“null”。

与第 2 点对应的是另一个问题。如何在例如之间接收数据12 月 30 日(一年前)和 1 月 5 日按年份分组?

【问题讨论】:

    标签: mysql date group-by


    【解决方案1】:

    对于第一个问题,使用 SQL DAY()MONTH() 函数:

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

    对于第二部分,您可能需要将其分成两部分。

    【讨论】:

    • 那个时期只是举例。当 period 包含两个不同的月份时,您的查询返回不正确的值。
    • 是否将月份和日期部分括在括号中并使用“OR”运算符添加多个?
    • 我从代码中的某个变量中获取数据。所以我不知道什么时候是一个周期,什么时候是两个月。我可以在您的解决方案中使用一些“IF”操作,但我正在寻找更简单的方法。
    • 您从代码中获得的确切数据类型是什么?一年两天?一个月的两天和一年的几个月?
    • 日期格式为 'yyyy-mm-dd'。修改代码以提取日期和月份数字对我来说没问题
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多