如何计算psql范围内的平均值

How to calculate averages over a range psql

我可以从我的数据库中获得一年的平均值。有没有办法在我的数据库中有效地获取所有年份(2017-2054)的数据,而不必每次都手动输入日期?在我 select 所有日期的平均值之后是否可以将其放入新的 table?谢谢!

lcoe=# select techindex, avg(lcoe) from lcoe where year = 2017 group by techindex;
       techindex        |        avg         
------------------------+--------------------
 Combustion Turbine     | 0.0564000003039837
 Unscrubbed             | 0.0689999982714653
 Offshore               |  0.119428569717067
 Photovoltaic           |  0.208888891670439
 EGS                    | 0.0549999997019768
 Fuel Cell              |  0.115666666378578
 Onshore                | 0.0587692308024718
 Scrubbed               | 0.0556000009179115
 Solar Thermal          |  0.134285714477301
 Combined Cycle         | 0.0457142852246761
 Hydrothermal           |  0.104249998694286
 Hydroelectric          | 0.0765999995172024
 IGCC                   | 0.0762727270749482
 Distributed Generation |  0.282000001519918
 Nuclear                | 0.0755000002682209
 Biopower               |  0.125571429197277
(16 rows)`

您可以生成年份和技术指数的所有组合,然后生成每个组合的平均值:

select y.year, ti.techindex, avg(lcoe.lcoe)
from (select distinct year from lcoe) y cross join
     (select distinct techindex from lco) ti left join
     lcoe
     on y.year = lcoe.year and ti.techindex = lcoe.techindex
group by y.year, ti.techindex;

如果您只想要每年的 techindex 个:

select yti.year, yti.techindex, avg(lcoe.lcoe)
from (select distinct year, techindex from lcoe) yti 
     lcoe
     on yti.year = lcoe.year and yti.techindex = lcoe.techindex
group by yti.year, yti.techindex;