2016-07-07 5 views
1

Ich bin in der Lage, einen Durchschnitt von meiner Datenbank für ein Jahr zu erhalten. Gibt es eine Möglichkeit, diese Daten für alle Jahre (2017-2054) in meiner Datenbank zu erhalten, ohne jedes Mal das Datum manuell eingeben zu müssen? Ist es möglich, nachdem ich den Durchschnitt von allen Daten gewählt habe, um das in eine neue Tabelle zu legen? Vielen Dank!Wie Durchschnittswerte über einen Bereich zu berechnen 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

vielleicht müssen Sie nur das Jahr der Select-Klausel und der Gruppenklausel hinzufügen – Leo

Antwort

0

Sie können alle Kombinationen der Jahre und Tech-Indizes erzeugen und dann für jede Kombination der Durchschnitt erzeugen:

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; 

Wenn Sie nur techindex wollen, die in jedem Jahr sind:

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; 
Verwandte Themen