-- @param {DateTime} $1:startDate -- @param {DateTime} $2:endDate -- @param {String} $3:regionCode - pass 'ALL' to return all regions WITH demand_agg AS ( SELECT ep.region_id, date_trunc('day', ep.timestamp) AS day, AVG(ep.demand_mw) AS avg_demand, MAX(ep.demand_mw) AS peak_demand FROM electricity_prices ep WHERE ep.timestamp BETWEEN $1 AND $2 GROUP BY ep.region_id, date_trunc('day', ep.timestamp) ), dc_agg AS ( SELECT d.region_id, COUNT(*)::INT AS datacenter_count, COALESCE(SUM(d.capacity_mw), 0) AS total_dc_capacity_mw FROM datacenters d GROUP BY d.region_id ) SELECT r.code AS region_code, r.name AS region_name, da.day, da.avg_demand, da.peak_demand, COALESCE(dc.datacenter_count, 0)::INT AS datacenter_count, COALESCE(dc.total_dc_capacity_mw, 0) AS total_dc_capacity_mw FROM grid_regions r INNER JOIN demand_agg da ON da.region_id = r.id LEFT JOIN dc_agg dc ON dc.region_id = r.id WHERE ($3 = 'ALL' OR r.code = $3) ORDER BY r.code, da.day