@@ -566,7 +566,7 @@ def get_annual_peak_demand(
566566 t.scenario,
567567 t.model_year as year,
568568 t.{ group_col } ,
569- t. value
569+ SUM(t.value) as value
570570 FROM energy_projection t
571571 INNER JOIN peak_hours p ON
572572 t.scenario = p.scenario
@@ -576,6 +576,7 @@ def get_annual_peak_demand(
576576 WHERE t.geography = ?
577577 AND t.scenario = ANY(?)
578578 AND t.model_year = ANY(?)
579+ GROUP BY t.scenario, t.model_year, t.{ group_col }
579580 ORDER BY { scenario_order } , t.model_year, t.{ group_col }
580581 """
581582 params = [
@@ -1177,17 +1178,28 @@ def get_time_series_comparison(
11771178 group_col = "metric"
11781179 else : # group_by == "Sector"
11791180 group_col = "sector"
1181+ group_time_period_calc = f"ROW_NUMBER() OVER (PARTITION BY scenario, model_year, { group_col } ORDER BY timestamp)"
11801182 sql = f"""
1183+ WITH hourly_totals AS (
1184+ SELECT
1185+ scenario,
1186+ model_year,
1187+ timestamp,
1188+ { group_col } ,
1189+ SUM(value) as value
1190+ FROM energy_projection
1191+ WHERE geography = ?
1192+ AND scenario = ?
1193+ AND model_year = ANY(?)
1194+ GROUP BY scenario, model_year, timestamp, { group_col }
1195+ )
11811196 SELECT
11821197 scenario,
11831198 model_year as year,
1184- { time_period_calc } as time_period,
1199+ { group_time_period_calc } as time_period,
11851200 { group_col } ,
11861201 value
1187- FROM energy_projection
1188- WHERE geography = ?
1189- AND scenario = ?
1190- AND model_year = ANY(?)
1202+ FROM hourly_totals
11911203 ORDER BY scenario, model_year, timestamp, { group_col }
11921204 """
11931205 params : list [Any ] = [self .project_country , scenario , years ]
@@ -1238,31 +1250,50 @@ def get_time_series_comparison(
12381250 else : # group_by == "Sector"
12391251 group_col = "sector"
12401252 sql = f"""
1253+ WITH hourly_totals AS (
1254+ SELECT
1255+ scenario,
1256+ model_year,
1257+ timestamp,
1258+ { group_col } ,
1259+ SUM(value) as value
1260+ FROM energy_projection
1261+ WHERE geography = ?
1262+ AND scenario = ?
1263+ AND model_year = ANY(?)
1264+ GROUP BY scenario, model_year, timestamp, { group_col }
1265+ )
12411266 SELECT
12421267 scenario,
12431268 model_year as year,
12441269 { time_period_calc } as time_period,
12451270 { group_col } ,
12461271 AVG(value) as value
1247- FROM energy_projection
1248- WHERE geography = ?
1249- AND scenario = ?
1250- AND model_year = ANY(?)
1272+ FROM hourly_totals
12511273 GROUP BY scenario, model_year, { time_period_calc } , { group_col }
12521274 ORDER BY scenario, model_year, time_period, { group_col }
12531275 """
12541276 params = [self .project_country , scenario , years ]
12551277 else :
12561278 sql = f"""
1279+ WITH hourly_totals AS (
1280+ SELECT
1281+ scenario,
1282+ model_year,
1283+ timestamp,
1284+ SUM(value) as value
1285+ FROM energy_projection
1286+ WHERE geography = ?
1287+ AND scenario = ?
1288+ AND model_year = ANY(?)
1289+ GROUP BY scenario, model_year, timestamp
1290+ )
12571291 SELECT
12581292 scenario,
12591293 model_year as year,
12601294 { time_period_calc } as time_period,
12611295 AVG(value) as value
1262- FROM energy_projection
1263- WHERE geography = ?
1264- AND scenario = ?
1265- AND model_year = ANY(?)
1296+ FROM hourly_totals
12661297 GROUP BY scenario, model_year, { time_period_calc }
12671298 ORDER BY scenario, model_year, time_period
12681299 """
0 commit comments