如何在Presto/SQL分区中找到滚动x天总和?

  • 本文关键字:滚动 Presto 分区 SQL sql presto
  • 更新时间 :
  • 英文 :


我正在寻找合适的SQL语法来完成这样的事情:

SUM(T.revenue) OVER (PARTITION BY T.date BETWEEN
DATEADD(T.date, -15) AND DATEADD(T.date, 15) AS rolling_30_day_revenue
)
FROM tab T 

最终结果应该是一个滚动的30天的收入总和。实现这一目标的正确方法是什么?

您可以在基于范围的框架中使用窗口函数:

SELECT sum(t.revenue) OVER (
ORDER BY t.date
RANGE BETWEEN interval '15' day PRECEDING AND interval '15' day FOLLOWING)
FROM tab t

对于每一行,该框架将包括从行t.date的前15天到行t.date的后15天开始的窗口中的所有行。

参见完全支持帧类型RANGE查看详细信息。

最新更新