SQL滑动窗口聚合(不使用窗口函数)

时间:2016-07-23 18:30:37

标签: sql window-functions sliding-window analytic-functions

我正在寻找一个可以通过以下方式在21天后汇总数据的查询: 我的表有以下几列: accountid,date,measure

对于每个帐户,我需要将之前的21天的日期汇总(衡量)。 有没有想法如何在没有窗口/分析功能的纯SQL中做到这一点? (我在一个没有分析功能支持的BI产品中编写SQL)

1 个答案:

答案 0 :(得分:1)

一种效率较低的方法使用相关子查询。如果您想要前21天的每个条目,那么:

select t.*,
       (select sum(t2.measure)
        from t t2
        where t2.accountid = t.accountid and
              t2.date > t.date - interval '21' day
       ) as sum21
from t;

并非日期函数因数据库而异,因此您的特定数据库可能有另一种减去21天的方法。