You are on page 1of 1

with config as(

select '2023-06-30T18:30:00Z'::timestamp + '5 hr 30 min'::interval as sdate,


'2023-07-02T18:29:00Z'::timestamp + '5 hr 30 min'::interval as edate , (1) as
p_psid
), child_ps_list as(
select source_id from ems_private.power_source_table where source_id in (
select CHILD_POWER_SOURCE_ID from
ems_private.POWER_SOURCE_LEVEL_MAPPING_TABLE where PARENT_POWER_SOURCE_ID =
(select p_psid from config)
)
), received_schedule as(
select log_time, (json_each_text(scheduled_power)).key,
(json_each_text(scheduled_power)).value from ems_public.received_schedule where
log_time >= (select sdate from config) and log_time < (select edate from config)
), final_data as(
select log_time,
case when key like '%_gss' then replace(key,'_gss','')::integer else
key::integer end as power_source_id,
key,
case when key like '%_gss' then value::real else value::real end as sch_power
from received_schedule
where value != ''
), final_data1 as(
select log_time, power_source_id, max(case when key like '%_gss' then
sch_power * 0.95 else sch_power end) as sch_power
from final_data group by 1,2 order by 1
), sum_of_all_state as(
select log_time, sum(sch_power) from final_data1 where power_source_id in
(select source_id from child_ps_list)
group by 1
)
select coalesce(avg(sum),0) from sum_of_all_state order by 1

You might also like