【发布时间】:2020-09-25 20:18:47
【问题描述】:
有没有更好的方法使用 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
【问题讨论】:
-
这是mysql还是mariadb? mariadb 最近获得了对临时表的支持:mariadb.com/kb/en/temporal-data-tables
-
两者,通常针对 mysql 5.7,但接近与 8.0+ 的兼容性
标签: mysql sql datetime sum intervals