从日期到日期的总和

Sum from date to date

我有一个 table 数据:

Date        Value
...
2020-07-30  0.0
2020-07-31  12527.922
2020-08-01  29983.598
2020-08-02  34333.74
2020-08-03  33550.0
...
2020-08-30  22722.02
2020-08-31  21376.416
2020-09-01  23762.43
2020-09-02  16267.47
2020-09-03  25241.0
...

我需要从一个月的第一天到下一个月的第一天求和包括。即,从 2020-08-01 到 2020-09-01(含),并且该值在开始期间的所有天数(在本例中为 08)的一列中。有什么想法吗?谢谢

预期输出:

Date        Value      Period_Sum
...
2020-07-30  0          sum of 2020-07-01 to 2020-08-01
2020-07-31  1          ...
2020-08-01  2          sum of 2020-08-01 to 2020-09-01
2020-08-02  3          ...
2020-08-03  3          ...
...
2020-08-30  2          ...
2020-08-31  2          ...
2020-09-01  2          sum of 2020-09-01 to 2020-10-01
2020-09-02  1          ...
2020-09-03  2          ...
...

根据 Adrian 的回复,我正在尝试使用如下子选择来实现它:

select
  (
    select
      sum(qq.value)
    from
      data_table qq
    where
      qq.date between date_trunc('month', q.date)
      and date_trunc('month', q.date) + interval '1 month'
  ) period_sum
, date
, value
from
  data_table q

但它缺少下个月的第一天。我想我需要调整 interval 部分。

例如:

SELECT 
    SUM(VALUE)
FROM
    some_table
WHERE 
    Date BETWEEN '2020-08-01' AND '2020-09-01';

这将为您提供每月的价值。将 your_table 换成您的 table 名称,将 your_date_field 换成您的日期字段。

编辑 放入年份位,这样你就可以 运行 如果你愿意,可以在多年内这样做。

SELECT 
   SUM(VALUE), 
   date_part('month', your_date_field ), 
   date_part('year', your_date_field )
FROM
  your_table
GROUP BY 
  date_part('month', your_date_field ),
  date_part('year', your_date_field )