MySQL按季分组

时间:2016-10-02 16:03:04

标签: php mysql date grouping

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

目前,我使用以下语法

示例:

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

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

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

有没有更有效的方式来获得像

这样的东西

2014 - xyz英寸,2015年 - xyz英寸,但2014年将与2014/2015赛季相对应。

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

1 个答案:

答案 0 :(得分:4)

使用此查询:

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

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