diff --git a/fact_daily_energy_consumed/fact_daily_energy_consumed.sql b/fact_daily_energy_consumed/fact_daily_energy_consumed.sql index 00b0ca0..b7967ce 100644 --- a/fact_daily_energy_consumed/fact_daily_energy_consumed.sql +++ b/fact_daily_energy_consumed/fact_daily_energy_consumed.sql @@ -61,5 +61,8 @@ JOIN energy_phase_B 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 + and total_energy.date=energy_phase_C.date; + + + diff --git a/fact_hourly_active_energy/fact_hourly_active_energy.sql b/fact_hourly_active_energy/fact_hourly_active_energy.sql index e69de29..d19b154 100644 --- a/fact_hourly_active_energy/fact_hourly_active_energy.sql +++ b/fact_hourly_active_energy/fact_hourly_active_energy.sql @@ -0,0 +1,65 @@ +-- model shows the energy consumed per day per device + +WITH total_energy AS ( + 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='ActivePower' + GROUP BY device_id, date +) + +, energy_phase_A AS ( + 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='ActivePowerA' + GROUP BY device_id, date +) + +, energy_phase_B AS ( + 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='ActivePowerB' + GROUP BY device_id, date +) + +, energy_phase_C AS ( + 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='ActivePowerC' + 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; + \ No newline at end of file