You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL窗口函数实现Alteryx中Exasol商品最近28天Qty总和

用Exasol SQL窗口函数实现最近28天Qty累加

当然可以用SQL窗口函数完美实现这个需求!你之前的代码问题出在窗口范围的定义上——用date_trunc('month',"Date")分区会把累加限制在当月内,而我们需要的是跨月份的动态28天滑动窗口。

正确的SQL实现代码

SELECT
  "article",
  "Date",
  "Qty",
  SUM("Qty") OVER (
    PARTITION BY "article"
    ORDER BY "Date"
    RANGE BETWEEN INTERVAL '27' DAY PRECEDING AND CURRENT ROW
  ) AS "Sum_Qty_28_days"
FROM your_table_name;

代码解释

  • PARTITION BY "article":确保只对同一商品的记录进行累加计算,不会和其他商品的数据混淆。
  • ORDER BY "Date":按日期排序,保证窗口是按照时间顺序从旧到新计算的。
  • RANGE BETWEEN INTERVAL '27' DAY PRECEDING AND CURRENT ROW:这是实现28天窗口的核心:
    • INTERVAL '27' DAY PRECEDING表示取当前日期往前推27天的时间点
    • 结合CURRENT ROW,整个窗口会包含当前日期及之前27天内的所有记录,正好覆盖28天的时间范围(当天+前27天)
    • Exasol支持直接对DATE类型的排序键使用INTERVAL来定义RANGE窗口,非常适合这种时间滑动需求。

针对你的示例验证

以商品'A'在2019-10-08的记录为例:

  • 窗口范围是2019-09-11(2019-10-08减去27天)到2019-10-08
  • 你示例中的2019-09-15、2019-10-05、2019-10-08都在这个范围内,对应的Qty值累加后得到8,完全符合你的需求。

注意事项

  • 确保"Date"列是DATE类型(而非字符串),否则INTERVAL的计算会出错
  • 如果同一商品同一天有多条记录,该逻辑会自动累加所有符合条件的Qty值
  • 如果某个商品在28天窗口内没有其他记录,Sum_Qty_28_days会等于当天的Qty值

内容的提问来源于stack exchange,提问作者Pardeep Naik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:57:45