每月日期数据的年平均值

时间:2018-02-15 10:07:56

标签: sql postgresql date average date-range

我在postgresql中有以下表格;

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中的月度数据中获得年度平均值?

注意:列值为整数类型,列期间为类型为daterange。

预期结果应为

6.5     2017
18.5    2018
30.5    2019
39.5    2020

1 个答案:

答案 0 :(得分:0)

如果您的期间总是需要一个月,包括下限和排除上限,您可以尝试这个

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