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

Posted

技术标签:

【中文标题】来自每月日期范围数据的年平均值【英文标题】:yearly average from monthly daterange data 【发布时间】:2018-02-15 10:07:55 【问题描述】:

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

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

预期的结果应该是

6.5     2017
18.5    2018
30.5    2019
39.5    2020

【问题讨论】:

到目前为止你做了什么? 【参考方案1】:

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

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

【讨论】:

以上是关于来自每月日期范围数据的年平均值的主要内容,如果未能解决你的问题,请参考以下文章

更新与每月日期匹配的查询

如何计算日期时间范围内的 n 个平均值?

计算平均值 (AVG),包括 Redshift DB 中某个日期范围内的缺失数据

根据日期范围计算运行平均值

SQL查询以获取时间范围列表的平均值

在R中的几列中获取月度均值的有效方法