【问题标题】:Postgresql cumulative sum Last 3 daysPostgresql 累计总和 最近 3 天
【发布时间】:2020-04-08 05:41:29
【问题描述】:

我有这些数据,我想计算一个滚动的 3 天总和,如下所示。

注意:必须考虑缺少date。所以不只是最后 3 行,而是 3 个太阳日。

我尝试了一个窗口功能,但它不起作用:

SELECT
    date,
    SUM(clicks) OVER (ORDER BY DATE ASC ROWS BETWEEN DATE - INTERVAL '3 day' AND date)
FROM table

【问题讨论】:

  • 我使用的是 Postgres 11(我错误地添加了 P9.1 标签)。无论如何,我在本地主机上使用 Postgresq 进行了测试,但在“)”附近出现语法错误
  • 您的描述说“必须考虑缺少的日期。所以不只是最后 3 行”。但是您的数据图片不包括任何缺失的日期。请发布示例数据 - 作为文本而不是图像 - 涵盖您的要求。
  • 使用第一个答案中建议的“INTERVAL '3 day'”我会解决这个问题。

标签: sql database postgresql aggregate-functions window-functions


【解决方案1】:

上限应为current rowrange

SELECT
    date,
    SUM(clicks) OVER (ORDER BY DATE ASC range BETWEEN INTERVAL '3 day' PRECEDING AND CURRENT ROW)
FROM table

【讨论】:

  • 当我尝试这个时,我得到错误:SQL 错误 [0A000]:错误:RANGE PRECEDING 仅支持 UNBOUNDED。似乎 POstgres 可能不支持这个? stackoverflow.com/questions/26791167/…
  • @cmrichards 它是 postgres 语法。创建一个问题并再次 ping 我
猜你喜欢
  • 1970-01-01
  • 2021-11-10
  • 2020-08-19
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 2018-06-30
  • 2011-08-07
相关资源
最近更新 更多