0

我的数据表有各种资产以及它们所属的组以及进入该组/人口/数据表的日期。

现在我可以计算资产的平均年龄,但我将如何计算一段时间内的平均年龄,例如对于 A 组,我可以计算资产 SN 001 和 SN 004,但我该怎么做获得自入学日期以来的运行平均值,并采用同比格式。

如果我不清楚,我很抱歉,我很乐意详细说明。

资产 团体 入境时间
SN 001 一个 2011-01-01
SN 002 2014-06-01
SN 003 C 2015-01-01
SN 004 一个 2018-06-01
SN 005 2019-01-01
SN 006 C 2021-06-01

期望的结果:其中 # 是平均年龄,并根据向每个组添加资产而变化,并相应调整。

入境日期 (Y) AVG_A 组 AVG_Group B AVG_Group C
2011 # # #
2012 # # #
2013 # # #
2014 # # #
2015 # # #
2016 年 # # #
2017 # # #
2018 # # #
2019 # # #
2020 # # #
2021 # # #
4

1 回答 1

0

你可以尝试这样的事情:

SELECT extract(year from y.year)
     , avg(age(y.year, "Date of Entry")) FILTER (WHERE "Group" = 'A' AND "Date of Entry" <= y.year) AS "AVG_Group A"
     , avg(age(y.year, "Date of Entry")) FILTER (WHERE "Group" = 'B' AND "Date of Entry" <= y.year) AS "AVG_Group B"
     , avg(age(y.year, "Date of Entry")) FILTER (WHERE "Group" = 'C' AND "Date of Entry" <= y.year) AS "AVG_Group C"
  FROM (SELECT generate_series(min(date_trunc('year', "Date of Entry")), max(date_trunc('year', "Date of Entry")), interval '1 year') AS year
          FROM your_table
       ) AS y
 CROSS JOIN your_table AS t
 GROUP BY y.year
 ORDER BY y.year

在dbfiddle中查看测试结果。

于 2021-12-23T18:45:48.603 回答