我有一张桌子(但在很多地方):
DATE STUFF
-------------------
2011-12-01 DATA
2011-12-02 DATA
2011-12-03 DATA
...
2011-12-31 DATA
2012-01-01 DATA
2012-01-02 DATA
我的表涵盖了从 2005 年到 2012 年的多年。我想获取每年中每个月的 AGGREGATE 函数值,即 SUM/AVG/MAX/MIN。简单的:
GROUP BY DATE_FORMAT(DATE, '%Y'), DATE_FORMAT(DATE, '%m')
我想在那些年的 3 个月时间段内做同样的事情......这适用于除一个以外的所有人:
GROUP BY DATE_FORMAT(DATE, '%Y'), DATE_FORMAT(DATE, '%m') IN (12, 01, 02)
我的其他时间段有效,因为它们在同一年(03、04、05)、(06、07、08)和(09、10、11)......但上面的 GROUP BY 是在 2012 年 12 月分组2012 年 1 月/2 月。我的时间段必须是 2011 年 12 月和 2012 年 1 月/2 月、2010 年 12 月和 2011 年 1 月/2 月……
我想保持这个通用性,所以我不必更新日期跨度,以便将代码放在多个位置的存储过程中。
如果 MONTH 12,我试图通过将前一年移动一年来自行加入表格。这产生了不良结果。