【问题标题】:Postgres SQL: Sum of ids greater than a day, computed day by day over a seriesPostgres SQL:大于一天的ID总和,在一系列中逐日计算
【发布时间】:2017-08-08 14:22:53
【问题描述】:

希望在某个日期范围内逐日计算移动总和。即希望将所有大于或等于日期的值相加,但逐行进行。我知道需要一个窗口函数,但在实际函数方面需要一些帮助。

** 我需要计算的总和大于连续的每个日期。 2017-08-02通知我不计算前一天的值

示例数据:

2017-08-1, 1
2017-08-2, 5
2017-08-3, 4
2017-08-4, 3
2017-08-5, 2

期望的结果:

2017-08-1, 15
2017-08-2, 14
2017-08-3, 9
2017-08-4, 5
2017-08-5, 2

这是我必须生成此数据的内容。

SELECT DATE_TRUNC('day', created_at),
   COUNT(*)
FROM table
GROUP BY 1
ORDER BY 1 DESC

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    只使用累积和:

    SELECT DATE_TRUNC('day', created_at),
           COUNT(*),
           SUM(COUNT(*)) OVER (ORDER BY DATE_TRUNC('day', created_at) DESC) as sum_greater_than
    FROM table
    GROUP BY 1
    ORDER BY 1 DESC;
    

    【讨论】:

    • 我对我的原始帖子添加了评论。我需要做这个总和,但我不需要计算每行中少于当前日期的天数。谢谢
    • Nvm,这就是我所需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多