From 10005c7897f69263a3e01f2da88c91af97f0c977 Mon Sep 17 00:00:00 2001 From: Dona Maria Absi <49731027+DonaAbsi@users.noreply.github.com> Date: Wed, 7 May 2025 14:51:06 +0300 Subject: [PATCH] bug fix --- ...ice_presence_detected_insert_statement.sql | 49 ++++++++++++------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/libs/common/src/sql/queries/fact_hourly_device_presence_detected/fact_daily_device_presence_detected_insert_statement.sql b/libs/common/src/sql/queries/fact_hourly_device_presence_detected/fact_daily_device_presence_detected_insert_statement.sql index a319037..ace575c 100644 --- a/libs/common/src/sql/queries/fact_hourly_device_presence_detected/fact_daily_device_presence_detected_insert_statement.sql +++ b/libs/common/src/sql/queries/fact_hourly_device_presence_detected/fact_daily_device_presence_detected_insert_statement.sql @@ -1,11 +1,4 @@ --- This model shows the number of times a presence was detected per hour, per day. -INSERT INTO public."presence-sensor-daily-detection" ( - device_uuid, - event_date, - count_motion_detected, - count_presence_detected, - count_total_presence_detected -) +-- This model shows the number of times a presence was detected per hour, per day WITH device_logs AS ( SELECT device.uuid AS device_id, @@ -49,7 +42,7 @@ presence_detection_summary AS ( d.subspace_id, pd.space_id, pd.event_time::date AS event_date, - EXTRACT(HOUR FROM date_trunc('hour', pd.event_time)) AS event_hour, + EXTRACT(HOUR FROM pd.event_time)::int AS event_hour, SUM(motion_detected) AS count_motion_detected, SUM(presence_detected) AS count_presence_detected, SUM(motion_detected + presence_detected) AS count_total_presence_detected @@ -63,13 +56,14 @@ all_dates_and_hours AS ( FROM ( SELECT DISTINCT device_id, subspace_id, space_id, event_date FROM presence_detection_summary - ) d, - generate_series(0, 23) AS event_hour + ) d + CROSS JOIN generate_series(0, 23) AS event_hour ), table_final AS ( SELECT - adah.*, + adah.device_id, + adah.event_date, COALESCE(pds.count_motion_detected, 0) AS count_motion_detected, COALESCE(pds.count_presence_detected, 0) AS count_presence_detected, COALESCE(pds.count_total_presence_detected, 0) AS count_total_presence_detected @@ -78,18 +72,35 @@ table_final AS ( ON pds.device_id = adah.device_id AND pds.event_date = adah.event_date AND pds.event_hour = adah.event_hour +), + +daily_aggregate AS ( + SELECT + device_id, + event_date, + SUM(count_motion_detected) AS count_motion_detected, + SUM(count_presence_detected) AS count_presence_detected, + SUM(count_total_presence_detected) AS count_total_presence_detected + FROM table_final + GROUP BY device_id, event_date ) -SELECT +INSERT INTO public."presence-sensor-daily-detection" ( + device_uuid, + event_date, + count_motion_detected, + count_presence_detected, + count_total_presence_detected +) +SELECT device_id, event_date, - SUM(count_motion_detected), - SUM(count_presence_detected), - SUM(count_total_presence_detected) -FROM table_final -GROUP BY 1, 2 + count_motion_detected, + count_presence_detected, + count_total_presence_detected +FROM daily_aggregate 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; \ No newline at end of file + count_total_presence_detected = EXCLUDED.count_total_presence_detected;