energy consumed

This commit is contained in:
Dona Maria Absi
2025-03-18 15:17:03 +03:00
parent c231b000ce
commit 992fe20d4f
3 changed files with 68 additions and 20 deletions

View File

@ -1,4 +1,4 @@
WITH first_last_times AS ( WITH total_energy AS (
-- Get the first and last event_time per device per day -- Get the first and last event_time per device per day
SELECT SELECT
device_id, device_id,
@ -10,9 +10,58 @@ WITH first_last_times AS (
GROUP BY device_id, date GROUP BY device_id, date
) )
SELECT , energy_phase_A AS (
device_id, -- Get the first and last event_time per device per day
date, SELECT
(max_value-min_value) as energy_consumed_kW device_id,
FROM first_last_times event_time::date AS date,
MIN(value)::integer AS min_value,
MAX(value)::integer AS max_value
FROM "device-status-log"
where code='EnergyConsumedA'
GROUP BY device_id, date
)
, energy_phase_B AS (
-- Get the first and last event_time per device per day
SELECT
device_id,
event_time::date AS date,
MIN(value)::integer AS min_value,
MAX(value)::integer AS max_value
FROM "device-status-log"
where code='EnergyConsumedB'
GROUP BY device_id, date
)
, energy_phase_C AS (
-- Get the first and last event_time per device per day
SELECT
device_id,
event_time::date AS date,
MIN(value)::integer AS min_value,
MAX(value)::integer AS max_value
FROM "device-status-log"
where code='EnergyConsumedC'
GROUP BY device_id, date
)
SELECT
total_energy.device_id,
total_energy.date,
(total_energy.max_value-total_energy.min_value) as energy_consumed_kW,
(energy_phase_A.max_value-energy_phase_A.min_value) as energy_consumed_A,
(energy_phase_B.max_value-energy_phase_B.min_value) as energy_consumed_B,
(energy_phase_C.max_value-energy_phase_C.min_value) as energy_consumed_C
FROM total_energy
JOIN energy_phase_A
ON total_energy.device_id=energy_phase_A.device_id
and total_energy.date=energy_phase_A.date
JOIN energy_phase_B
ON total_energy.device_id=energy_phase_B.device_id
and total_energy.date=energy_phase_B.date
JOIN energy_phase_C
ON total_energy.device_id=energy_phase_C.device_id
and total_energy.date=energy_phase_C.date

View File

@ -51,23 +51,21 @@ WITH start_date AS (
AND a.device_id <> b.device_id AND a.device_id <> b.device_id
AND a.start_time < b.end_time AND a.start_time < b.end_time
AND b.start_time < a.end_time AND b.start_time < a.end_time
) )
, daily_total_occupancy AS ( , daily_total_occupancy AS (
SELECT SELECT
start_date.space_id, t.space_id,
dim_date.daily_date, DATE(t.start_time) AS occupancy_date,
86,400 - COALESCE(SUM(o.overlap_duration_seconds), 0) AS total_occupancy_seconds 86,400 - COALESCE(SUM(o.overlap_duration_seconds), 0) AS total_occupancy_seconds
FROM dim_date FROM time_intervals t
LEFT JOIN overlaping_none_presence o LEFT JOIN overlaping_none_presence o
--ON t.space_id = o.space_id ON t.space_id = o.space_id
ON dim_date.daily_date = o.overlap_start::date AND t.start_time < o.overlap_end
--AND t.start_time < o.overlap_end AND o.overlap_start < t.end_time
-- AND o.overlap_start < t.end_time GROUP BY t.space_id, DATE(t.start_time)
left join start_date
on start_date.space_id = o.space_id
GROUP BY 1,2
) )
SELECT * FROM daily_total_occupancy SELECT * FROM daily_total_occupancy

View File

@ -11,4 +11,5 @@ left join "permission-type" pt
left join device left join device
on device."uuid" =dup.device_uuid on device."uuid" =dup.device_uuid
LEFT JOIN product LEFT JOIN product
ON product.uuid = device.product_device_uuid ON product.uuid = device.product_device_uuid;