SQL滑动窗口聚合(不使用窗口函数)
Posted
技术标签:
【中文标题】SQL滑动窗口聚合(不使用窗口函数)【英文标题】:SQL sliding window aggregation (without using window function) 【发布时间】:2016-07-23 18:30:36 【问题描述】:我正在寻找一个可以通过以下方式聚合 21 天前的数据的查询: 我的表有以下列: 帐号、日期、度量
对于每个帐户,我需要过去 21 天的总和(衡量)日期。 知道如何在没有窗口/分析功能的纯 SQL 中做到这一点吗? (我在不支持分析功能的 BI 产品中编写 SQL)
【问题讨论】:
你能提供样本数据和想要的结果吗? 21 天后是什么? 【参考方案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 天的方法。
【讨论】:
以上是关于SQL滑动窗口聚合(不使用窗口函数)的主要内容,如果未能解决你的问题,请参考以下文章
Flink SQL 分组窗口函数 Group Window 实战
R语言进行数据聚合统计(Aggregating transforms)计算滑动窗口统计值(Window Statistics):使用R原生方法data.tabledplyr等方案计算滑动分组统计