每月日期范围数据的年平均值

yearly average from monthly daterange data

我在 postgresql 中有以下 table;

Value  period
1   [2017-01-01,2017-02-01)
2   [2017-02-01,2017-03-01)
3   [2017-03-01,2017-04-01)
4   [2017-04-01,2017-05-01)
5   [2017-05-01,2017-06-01)
6   [2017-06-01,2017-07-01)
7   [2017-07-01,2017-08-01)
8   [2017-08-01,2017-09-01)
9   [2017-09-01,2017-10-01)
10  [2017-10-01,2017-11-01)
11  [2017-11-01,2017-12-01)
12  [2017-12-01,2018-01-01)
13  [2018-01-01,2018-02-01)
14  [2018-02-01,2018-03-01)
15  [2018-03-01,2018-04-01)
16  [2018-04-01,2018-05-01)
17  [2018-05-01,2018-06-01)
18  [2018-06-01,2018-07-01)
19  [2018-07-01,2018-08-01)
20  [2018-08-01,2018-09-01)
21  [2018-09-01,2018-10-01)
22  [2018-10-01,2018-11-01)
23  [2018-11-01,2018-12-01)
24  [2018-12-01,2019-01-01)
25  [2019-01-01,2019-02-01)
26  [2019-02-01,2019-03-01)
27  [2019-03-01,2019-04-01)
28  [2019-04-01,2019-05-01)
29  [2019-05-01,2019-06-01)
30  [2019-06-01,2019-07-01)
31  [2019-07-01,2019-08-01)
32  [2019-08-01,2019-09-01)
33  [2019-09-01,2019-10-01)
34  [2019-10-01,2019-11-01)
35  [2019-11-01,2019-12-01)
36  [2019-12-01,2020-01-01)
37  [2020-01-01,2020-02-01)
38  [2020-02-01,2020-03-01)
39  [2020-03-01,2020-04-01)
40  [2020-04-01,2020-05-01)
41  [2020-05-01,2020-06-01)
42  [2020-06-01,2020-07-01)

如何从 postgresql 中的月度数据中获取年平均值?

注意:列值是整数类型,列周期是日期范围。

预期结果应该是

6.5     2017
18.5    2018
30.5    2019
39.5    2020

如果你的月经总是一个月,包括下限不包括上限,你可以试试这个

select
    avg(value * 1.0) as average,
    extract(year from lower(period)) as year
from table
group by year