【问题标题】:MySQL grouping by seasonMySQL 按季节分组
【发布时间】:2016-10-02 16:03:03
【问题描述】:

我试图找出最有效的方法来计算使用 MySQL 数据库中的数据和日期的统计数据。

目前,我使用以下语法

例子:

SELECT sum(Precipitation) from DataTable GROUP BY YEAR(Datetime)

这很好用,我得到了每年的总降雨量。但是,现在我想实现设置雨季开始的选项。在某些地方,雨季可能会在九月开始。在这种情况下,我需要相同的计算,即也按“年”分组,但总是从 9 月到 8 月。

我正在考虑如何做到这一点,我能想到的唯一方法是以某种方式计算每月总和,然后使用 PHP 尝试将它们加起来。但问题是,考虑到有大量数据并且原始脚本仅使用上面的这一行,这可能会慢得多。

有没有更有效的方法来获得类似的东西

2014 - xyz 英寸,2015 - xyz 英寸,但 2014 对应于例如 2014/2015 赛季等。

表中的数据是这样的:第 1 列始终是日期时间,然后是实际值,数据间隔为 5 分钟。我需要维护表结构,所以我不能创建一个不同的表,其中值的组织方式不同。

【问题讨论】:

  • 这些季节是每年都不同,还是每年都是同一个固定日期?只是要求提供适当的建议。无论如何,SQL 会变得更大更复杂,但不要害怕!

标签: php mysql date grouping


【解决方案1】:

使用这个查询:

SELECT SUM(Precipitation)
FROM DataTable
GROUP BY YEAR(DATE_SUB(Datetime, INTERVAL 8 MONTH))

此查询将每个日期向后移动 8 个月,结果 2016 年 9 月 1 日似乎是 2016 年的第一天,而 2016 年 8 月似乎是最后一个月2015 年。

【讨论】:

  • 哇,谢谢!我不知道 DATE_SUB 命令,你为我省去了很多多余的 PHP 脚本 :)
猜你喜欢
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 2012-10-19
  • 2014-05-02
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多