Mysql 按6个月windows进行SQL聚合

Mysql 按6个月windows进行SQL聚合,mysql,sql,datetime,sum,intervals,Mysql,Sql,Datetime,Sum,Intervals,有没有更好的方法使用SQL(mysql)在6个月的窗口内进行聚合?这似乎可以在正常情况下获取相关数据,但显然是有限的 SELECT SUM(...) some_aggg, (CASE WHEN SOME_DATE > DATE_SUB(now(), INTERVAL 6 MONTH) THEN 3 WHEN SOME_DATE > DATE_SUB(now(), INTERVAL 12 MONTH) THEN 2 WHEN SOME_

有没有更好的方法使用SQL(mysql)在6个月的窗口内进行聚合?这似乎可以在正常情况下获取相关数据,但显然是有限的

SELECT SUM(...) some_aggg, 
   (CASE
       WHEN SOME_DATE > DATE_SUB(now(), INTERVAL 6 MONTH) THEN 3
       WHEN SOME_DATE > DATE_SUB(now(), INTERVAL 12 MONTH) THEN 2
       WHEN SOME_DATE > DATE_SUB(now(), INTERVAL 18 MONTH) THEN 1
     ELSE 0
    END) RECENCY
WHERE ...
GROUP BY RECENCY
ORDER BY RECENCY DESC

来点算术怎么样

select sum(...) some_aggg, 
   floor(timestampdiff(month, some_date, now()) / 6) recency
where ...
group by recency
order by recency

recenty
为您提供一个整数值,该整数值从
0
(日期小于6个月)开始,每6个月递增1:
1
表示6个月到1年之间,依此类推。

这是mysql还是mariadb?mariadb最近获得了对时态表的支持:两者都支持,通常针对mysql 5.7,但接近与8.0+timestampdiff:)的兼容性(编辑建议)在日期字段中突出数据错误的好处