窗口函数与日期时间结合:Snowflake是否支持该SQL语法?
在Snowflake中实现「最近n天数量统计」的窗口函数写法可行性
嘿,这个需求很常见,刚好Snowflake完全支持你写的这种窗口函数结合日期区间的写法!
你给出的SQL语句直接就能在Snowflake里运行,完美匹配「统计最近28天数量」的场景:
select t.*, sum(qty) over ( partition by article order by date range between interval '27 day' preceding and current row ) as sum_qty_28_days from t;
关键部分拆解:
partition by article:按商品维度拆分统计,保证每个商品的最近28天数据是独立计算的order by date:这是使用日期范围窗口的必要前提,窗口函数需要明确的排序逻辑来划定时间区间range between interval '27 day' preceding and current row:核心的时间范围定义——以当前行的date为基准,包含往前推27天(加上当天刚好28天)到当前行的所有数据,对qty字段求和
小提示:
如果你的date字段是TIMESTAMP类型,interval '27 day'会精准计算27天的时长;如果是DATE类型,则会匹配前27个自然日,两种类型都能正常适配。要是你需要统计连续完整的28天(哪怕某天没有数据也要计入),可以结合日期维度表补全缺失日期后再用这个窗口函数,结果会更准确。
内容的提问来源于stack exchange,提问作者Michael D
相关产品推荐
相关产品推荐

