edit procedure

This commit is contained in:
Dona Maria Absi
2025-05-07 12:52:22 +03:00
parent 606de2e0e3
commit adf1c5e2e0
3 changed files with 40 additions and 10 deletions

View File

@ -17,4 +17,5 @@ JOIN params P ON TRUE
WHERE B."uuid"::TEXT = ANY(P.device_ids) WHERE B."uuid"::TEXT = ANY(P.device_ids)
AND (P.start_date IS NULL OR A.date >= P.start_date) AND (P.start_date IS NULL OR A.date >= P.start_date)
AND (P.end_date IS NULL OR A.date <= P.end_date) AND (P.end_date IS NULL OR A.date <= P.end_date)
GROUP BY 1; GROUP BY 1

View File

@ -1,14 +1,43 @@
-- will return the presence metrics for the days of the selected month
WITH params AS ( WITH params AS (
SELECT 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 string_to_array(NULLIF($4, ''), ',') AS device_ids
) )
SELECT A.* , final_data AS (
FROM public."presence-sensor-daily-detection" AS A SELECT
JOIN params P ON TRUE A.device_uuid,
WHERE A.device_uuid::text = ANY(P.device_ids) A.event_date,
AND ( A.count_motion_detected,
P.event_date IS NULL OR A.event_date = P.event_date OR A.event_date IS NULL A.count_presence_detected,
) A.count_total_presence_detected
order by A.device_uuid, A.event_date ; 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;