Postgres SQL:大于一天的ID总和,在一系列中逐日计算

时间:2017-08-08 14:22:54

标签: sql postgresql

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

**我需要计算总和大于行中每个日期的总和。关于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

1 个答案:

答案 0 :(得分: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;