簡體   English   中英

按 6 個月窗口聚合的 SQL

[英]SQL Aggregating by 6 month windows

有沒有更好的方法使用 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

recency為您提供一個從0開始的整數值(日期小於 6 個月),每 6 個月遞增 1: 1表示介於 6 個月和 1 歲之間,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM