2016-07-07 5 views
1

Я могу получить среднее значение по моей базе данных в течение одного года. Есть ли способ эффективно получить эти данные за все годы (2017-2054) в моей базе данных без необходимости вручную вводить дату каждый раз? Возможно ли после того, как я выберу среднее значение из всех дат, чтобы поместить это в новую таблицу? Благодаря!Как рассчитать средние значения в диапазоне psql

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)` 
+0

Возможно, вам просто нужно добавить год к предложению select и к предложению группы – Leo

ответ

0

Вы можете создавать все комбинации лет и технологических показателей, а затем генерировать среднее значение для каждой комбинации:

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; 
Смежные вопросы