sql first refactor
This commit is contained in:
86
db/routines/R__fn_energy_flows_intervals_day.sql
Normal file
86
db/routines/R__fn_energy_flows_intervals_day.sql
Normal file
@@ -0,0 +1,86 @@
|
||||
create or replace function ems.fn_energy_flows_intervals_day(p_site_id int, p_day date)
|
||||
returns jsonb
|
||||
language sql
|
||||
stable
|
||||
as $fn$
|
||||
select coalesce(
|
||||
jsonb_agg(
|
||||
jsonb_build_object(
|
||||
'interval_start', ai.interval_start,
|
||||
'pv_production_kwh',
|
||||
case
|
||||
when ai.actual_pv_production_wh is null then null
|
||||
else round(ai.actual_pv_production_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'grid_import_kwh',
|
||||
case
|
||||
when ai.actual_grid_import_wh is null then null
|
||||
else round(ai.actual_grid_import_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'grid_export_kwh',
|
||||
case
|
||||
when ai.actual_grid_export_wh is null then null
|
||||
else round(ai.actual_grid_export_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'batt_charge_kwh',
|
||||
case
|
||||
when ai.actual_batt_charge_wh is null then null
|
||||
else round(ai.actual_batt_charge_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'batt_discharge_kwh',
|
||||
case
|
||||
when ai.actual_batt_discharge_wh is null then null
|
||||
else round(ai.actual_batt_discharge_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'load_kwh',
|
||||
case
|
||||
when ai.actual_load_consumption_wh is null then null
|
||||
else round(ai.actual_load_consumption_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'pv_to_load_kwh',
|
||||
case
|
||||
when ai.flow_pv_to_load_wh is null then null
|
||||
else round(ai.flow_pv_to_load_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'pv_to_batt_kwh',
|
||||
case
|
||||
when ai.flow_pv_to_batt_wh is null then null
|
||||
else round(ai.flow_pv_to_batt_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'pv_to_grid_kwh',
|
||||
case
|
||||
when ai.flow_pv_to_grid_wh is null then null
|
||||
else round(ai.flow_pv_to_grid_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'batt_to_load_kwh',
|
||||
case
|
||||
when ai.flow_batt_to_load_wh is null then null
|
||||
else round(ai.flow_batt_to_load_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'batt_to_grid_kwh',
|
||||
case
|
||||
when ai.flow_batt_to_grid_wh is null then null
|
||||
else round(ai.flow_batt_to_grid_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'grid_to_load_kwh',
|
||||
case
|
||||
when ai.flow_grid_to_load_wh is null then null
|
||||
else round(ai.flow_grid_to_load_wh::numeric / 1000, 4)
|
||||
end,
|
||||
'grid_to_batt_kwh',
|
||||
case
|
||||
when ai.flow_grid_to_batt_wh is null then null
|
||||
else round(ai.flow_grid_to_batt_wh::numeric / 1000, 4)
|
||||
end
|
||||
)
|
||||
order by ai.interval_start
|
||||
),
|
||||
'[]'::jsonb
|
||||
)
|
||||
from ems.audit_interval ai
|
||||
where ai.site_id = p_site_id
|
||||
and (date_trunc('day', ai.interval_start at time zone 'Europe/Prague'))::date = p_day;
|
||||
$fn$;
|
||||
|
||||
comment on function ems.fn_energy_flows_intervals_day(int, date) is
|
||||
'15min energy flows pro jeden kalendářní den (Prague) jako JSON pole.';
|
||||
Reference in New Issue
Block a user