From adf1c5e2e06e1212e010342f9ea541b9a4f00e02 Mon Sep 17 00:00:00 2001 From: Dona Maria Absi <49731027+DonaAbsi@users.noreply.github.com> Date: Wed, 7 May 2025 12:52:22 +0300 Subject: [PATCH] edit procedure --- ...onthly_space_energy_consumed_procedure.sql | 3 +- .../procedures/fact_space_occupancy/.Rhistory | 0 .../procedure_fact_daily_space_occupancy.sql | 47 +++++++++++++++---- 3 files changed, 40 insertions(+), 10 deletions(-) delete mode 100644 libs/common/src/sql/procedures/fact_space_occupancy/.Rhistory diff --git a/libs/common/src/sql/procedures/fact_space_energy_consumed/fact_monthly_space_energy_consumed_procedure.sql b/libs/common/src/sql/procedures/fact_space_energy_consumed/fact_monthly_space_energy_consumed_procedure.sql index 8002de6..5941d6b 100644 --- a/libs/common/src/sql/procedures/fact_space_energy_consumed/fact_monthly_space_energy_consumed_procedure.sql +++ b/libs/common/src/sql/procedures/fact_space_energy_consumed/fact_monthly_space_energy_consumed_procedure.sql @@ -17,4 +17,5 @@ JOIN params P ON TRUE WHERE B."uuid"::TEXT = ANY(P.device_ids) AND (P.start_date IS NULL OR A.date >= P.start_date) AND (P.end_date IS NULL OR A.date <= P.end_date) -GROUP BY 1; +GROUP BY 1 + diff --git a/libs/common/src/sql/procedures/fact_space_occupancy/.Rhistory b/libs/common/src/sql/procedures/fact_space_occupancy/.Rhistory deleted file mode 100644 index e69de29..0000000 diff --git a/libs/common/src/sql/procedures/fact_space_occupancy/procedure_fact_daily_space_occupancy.sql b/libs/common/src/sql/procedures/fact_space_occupancy/procedure_fact_daily_space_occupancy.sql index 909f1a0..b1b5d77 100644 --- a/libs/common/src/sql/procedures/fact_space_occupancy/procedure_fact_daily_space_occupancy.sql +++ b/libs/common/src/sql/procedures/fact_space_occupancy/procedure_fact_daily_space_occupancy.sql @@ -1,14 +1,43 @@ +-- will return the presence metrics for the days of the selected month WITH params AS ( SELECT - TO_DATE(NULLIF($2, ''), 'YYYY-MM-DD') AS event_date, + TO_DATE(NULLIF($2, ''), 'YYYY-MM') AS month, string_to_array(NULLIF($4, ''), ',') AS device_ids ) -SELECT A.* -FROM public."presence-sensor-daily-detection" AS A -JOIN params P ON TRUE -WHERE A.device_uuid::text = ANY(P.device_ids) - AND ( - P.event_date IS NULL OR A.event_date = P.event_date OR A.event_date IS NULL - ) - order by A.device_uuid, A.event_date ; +, final_data AS ( + SELECT + A.device_uuid, + A.event_date, + A.count_motion_detected, + A.count_presence_detected, + A.count_total_presence_detected + FROM public."presence-sensor-daily-detection" AS A + JOIN params P ON TRUE + WHERE A.device_uuid::text = ANY(P.device_ids) + AND (- + P.month IS NULL + OR date_trunc('month', A.event_date) = P.month + ) +) + +INSERT INTO public."presence-sensor-daily-detection" ( + device_uuid, + event_date, + count_motion_detected, + count_presence_detected, + count_total_presence_detected +) +SELECT + device_uuid, + event_date, + count_motion_detected, + count_presence_detected, + count_total_presence_detected +FROM final_data +ON CONFLICT (device_uuid, event_date) DO UPDATE +SET + count_motion_detected = EXCLUDED.count_motion_detected, + count_presence_detected = EXCLUDED.count_presence_detected, + count_total_presence_detected = EXCLUDED.count_total_presence_detected; +