mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-15 02:15:21 +00:00
bug fix
This commit is contained in:
@ -1,11 +1,4 @@
|
|||||||
-- This model shows the number of times a presence was detected per hour, per day.
|
-- 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
|
|
||||||
)
|
|
||||||
WITH device_logs AS (
|
WITH device_logs AS (
|
||||||
SELECT
|
SELECT
|
||||||
device.uuid AS device_id,
|
device.uuid AS device_id,
|
||||||
@ -49,7 +42,7 @@ presence_detection_summary AS (
|
|||||||
d.subspace_id,
|
d.subspace_id,
|
||||||
pd.space_id,
|
pd.space_id,
|
||||||
pd.event_time::date AS event_date,
|
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(motion_detected) AS count_motion_detected,
|
||||||
SUM(presence_detected) AS count_presence_detected,
|
SUM(presence_detected) AS count_presence_detected,
|
||||||
SUM(motion_detected + presence_detected) AS count_total_presence_detected
|
SUM(motion_detected + presence_detected) AS count_total_presence_detected
|
||||||
@ -63,13 +56,14 @@ all_dates_and_hours AS (
|
|||||||
FROM (
|
FROM (
|
||||||
SELECT DISTINCT device_id, subspace_id, space_id, event_date
|
SELECT DISTINCT device_id, subspace_id, space_id, event_date
|
||||||
FROM presence_detection_summary
|
FROM presence_detection_summary
|
||||||
) d,
|
) d
|
||||||
generate_series(0, 23) AS event_hour
|
CROSS JOIN generate_series(0, 23) AS event_hour
|
||||||
),
|
),
|
||||||
|
|
||||||
table_final AS (
|
table_final AS (
|
||||||
SELECT
|
SELECT
|
||||||
adah.*,
|
adah.device_id,
|
||||||
|
adah.event_date,
|
||||||
COALESCE(pds.count_motion_detected, 0) AS count_motion_detected,
|
COALESCE(pds.count_motion_detected, 0) AS count_motion_detected,
|
||||||
COALESCE(pds.count_presence_detected, 0) AS count_presence_detected,
|
COALESCE(pds.count_presence_detected, 0) AS count_presence_detected,
|
||||||
COALESCE(pds.count_total_presence_detected, 0) AS count_total_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
|
ON pds.device_id = adah.device_id
|
||||||
AND pds.event_date = adah.event_date
|
AND pds.event_date = adah.event_date
|
||||||
AND pds.event_hour = adah.event_hour
|
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,
|
device_id,
|
||||||
event_date,
|
event_date,
|
||||||
SUM(count_motion_detected),
|
count_motion_detected,
|
||||||
SUM(count_presence_detected),
|
count_presence_detected,
|
||||||
SUM(count_total_presence_detected)
|
count_total_presence_detected
|
||||||
FROM table_final
|
FROM daily_aggregate
|
||||||
GROUP BY 1, 2
|
|
||||||
ON CONFLICT (device_uuid, event_date) DO UPDATE
|
ON CONFLICT (device_uuid, event_date) DO UPDATE
|
||||||
SET
|
SET
|
||||||
count_motion_detected = EXCLUDED.count_motion_detected,
|
count_motion_detected = EXCLUDED.count_motion_detected,
|
||||||
count_presence_detected = EXCLUDED.count_presence_detected,
|
count_presence_detected = EXCLUDED.count_presence_detected,
|
||||||
count_total_presence_detected = EXCLUDED.count_total_presence_detected;
|
count_total_presence_detected = EXCLUDED.count_total_presence_detected;
|
||||||
|
Reference in New Issue
Block a user