gpt4 book ai didi

mysql - GROUP BY 不同年份的连续月份

转载 作者:可可西里 更新时间:2023-11-01 06:48:03 25 4
gpt4 key购买 nike

我只有一张 table (但在很多地方):

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 年的多个年份。我想获取每年每个月的聚合函数值,即 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,我试图通过将前一年提前一年来自行加入表格。这产生​​了不良结果。

最佳答案

 GROUP BY floor((month(DATE) + year(DATE) * 12 -1 + %month_shift%) / %month_group_period%)

在您的示例中,%month_group_period% 是三 (3)
%month_shift% 是一 (1) 一起获得十二月、一月、二月,等等

编辑:这也适用于 5 个月(如果您愿意)

关于mysql - GROUP BY 不同年份的连续月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11937913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com