mirror of
https://github.com/SyncrowIOT/data.git
synced 2025-07-17 02:25:19 +00:00
hourly
This commit is contained in:
71
fact_hourly_energy_consumed/fact_hourly_energy_consumed.sql
Normal file
71
fact_hourly_energy_consumed/fact_hourly_energy_consumed.sql
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
WITH total_energy AS (
|
||||||
|
SELECT
|
||||||
|
device_id,
|
||||||
|
event_time::date AS date,
|
||||||
|
EXTRACT(HOUR FROM event_time) AS hour,
|
||||||
|
MIN(value)::integer AS min_value,
|
||||||
|
MAX(value)::integer AS max_value
|
||||||
|
FROM "device-status-log"
|
||||||
|
WHERE code = 'EnergyConsumed'
|
||||||
|
GROUP BY device_id, date, hour
|
||||||
|
),
|
||||||
|
|
||||||
|
energy_phase_A AS (
|
||||||
|
SELECT
|
||||||
|
device_id,
|
||||||
|
event_time::date AS date,
|
||||||
|
EXTRACT(HOUR FROM event_time) AS hour,
|
||||||
|
MIN(value)::integer AS min_value,
|
||||||
|
MAX(value)::integer AS max_value
|
||||||
|
FROM "device-status-log"
|
||||||
|
WHERE code = 'EnergyConsumedA'
|
||||||
|
GROUP BY device_id, date, hour
|
||||||
|
),
|
||||||
|
|
||||||
|
energy_phase_B AS (
|
||||||
|
SELECT
|
||||||
|
device_id,
|
||||||
|
event_time::date AS date,
|
||||||
|
EXTRACT(HOUR FROM event_time) AS hour,
|
||||||
|
MIN(value)::integer AS min_value,
|
||||||
|
MAX(value)::integer AS max_value
|
||||||
|
FROM "device-status-log"
|
||||||
|
WHERE code = 'EnergyConsumedB'
|
||||||
|
GROUP BY device_id, date, hour
|
||||||
|
),
|
||||||
|
|
||||||
|
energy_phase_C AS (
|
||||||
|
SELECT
|
||||||
|
device_id,
|
||||||
|
event_time::date AS date,
|
||||||
|
EXTRACT(HOUR FROM event_time) AS hour,
|
||||||
|
MIN(value)::integer AS min_value,
|
||||||
|
MAX(value)::integer AS max_value
|
||||||
|
FROM "device-status-log"
|
||||||
|
WHERE code = 'EnergyConsumedC'
|
||||||
|
GROUP BY device_id, date, hour
|
||||||
|
)
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
total_energy.device_id,
|
||||||
|
total_energy.date,
|
||||||
|
total_energy.hour,
|
||||||
|
(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
|
||||||
|
AND total_energy.hour = energy_phase_A.hour
|
||||||
|
JOIN energy_phase_B
|
||||||
|
ON total_energy.device_id = energy_phase_B.device_id
|
||||||
|
AND total_energy.date = energy_phase_B.date
|
||||||
|
AND total_energy.hour = energy_phase_B.hour
|
||||||
|
JOIN energy_phase_C
|
||||||
|
ON total_energy.device_id = energy_phase_C.device_id
|
||||||
|
AND total_energy.date = energy_phase_C.date
|
||||||
|
AND total_energy.hour = energy_phase_C.hour
|
||||||
|
ORDER BY total_energy.device_id, total_energy.date, total_energy.hour;
|
||||||
|
|
Reference in New Issue
Block a user