From ea1201307cabaf394bebe742b13d4399dbd81271 Mon Sep 17 00:00:00 2001 From: Dona Maria Absi <49731027+DonaAbsi@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:18:14 +0300 Subject: [PATCH] insert historical data --- ...urly_energy_consumed_insert_statements.sql | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed_insert_statements.sql diff --git a/libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed_insert_statements.sql b/libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed_insert_statements.sql new file mode 100644 index 0000000..fd0d955 --- /dev/null +++ b/libs/common/src/sql/queries/fact_hourly_energy_consumed/fact_hourly_energy_consumed_insert_statements.sql @@ -0,0 +1,135 @@ +WITH total_energy AS ( + SELECT + log.device_id, + log.event_time::date AS date, + EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, + MIN(log.value)::integer AS min_value, + MAX(log.value)::integer AS max_value + FROM "device-status-log" log + WHERE log.code = 'EnergyConsumed' + GROUP BY 1,2,3,4,5 +), + +energy_phase_A AS ( + SELECT + log.device_id, + log.event_time::date AS date, + EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, + MIN(log.value)::integer AS min_value, + MAX(log.value)::integer AS max_value + FROM "device-status-log" log + WHERE log.code = 'EnergyConsumedA' + GROUP BY 1,2,3,4,5 +), + +energy_phase_B AS ( + SELECT + log.device_id, + log.event_time::date AS date, + EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, + MIN(log.value)::integer AS min_value, + MAX(log.value)::integer AS max_value + FROM "device-status-log" log + WHERE log.code = 'EnergyConsumedB' + GROUP BY 1,2,3,4,5 +), + +energy_phase_C AS ( + SELECT + log.device_id, + log.event_time::date AS date, + EXTRACT(HOUR FROM log.event_time) AS hour, + TO_CHAR(log.event_time, 'MM-YYYY') AS event_month, + EXTRACT(YEAR FROM log.event_time)::int AS event_year, + MIN(log.value)::integer AS min_value, + MAX(log.value)::integer AS max_value + FROM "device-status-log" log + WHERE log.code = 'EnergyConsumedC' + GROUP BY 1,2,3,4,5 +) +, final_data as ( +SELECT + t.device_id, + t.date, + t.event_year::text, + t.event_month, + t.hour, + (t.max_value - t.min_value) AS energy_consumed_kW, + (a.max_value - a.min_value) AS energy_consumed_A, + (b.max_value - b.min_value) AS energy_consumed_B, + (c.max_value - c.min_value) AS energy_consumed_C +FROM total_energy t +JOIN energy_phase_A a ON t.device_id = a.device_id AND t.date = a.date AND t.hour = a.hour +JOIN energy_phase_B b ON t.device_id = b.device_id AND t.date = b.date AND t.hour = b.hour +JOIN energy_phase_C c ON t.device_id = c.device_id AND t.date = c.date AND t.hour = c.hour +ORDER BY 1,2) + + +INSERT INTO public."power-clamp-energy-consumed-daily"( + device_uuid, + energy_consumed_kw, + energy_consumed_a, + energy_consumed_b, + energy_consumed_c, + date +) + +SELECT + device_id, + SUM(CAST(energy_consumed_kw AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_a AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_b AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_c AS NUMERIC))::VARCHAR, + date +FROM final_data +GROUP BY device_id, date; + + + +INSERT INTO public."power-clamp-energy-consumed-hourly"( + device_uuid, + energy_consumed_kw, + energy_consumed_a, + energy_consumed_b, + energy_consumed_c, + date, + hour +) + +SELECT + device_id, + SUM(CAST(energy_consumed_kw AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_a AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_b AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_c AS NUMERIC))::VARCHAR, + date, + hour +FROM final_data +GROUP BY 1,6,7 + + +INSERT INTO public."power-clamp-energy-consumed-monthly"( + device_uuid, + energy_consumed_kw, + energy_consumed_a, + energy_consumed_b, + energy_consumed_c, + month +) + +SELECT + device_id, + SUM(CAST(energy_consumed_kw AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_a AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_b AS NUMERIC))::VARCHAR, + SUM(CAST(energy_consumed_c AS NUMERIC))::VARCHAR, + TO_CHAR(date, 'MM-YYYY') + FROM final_data +GROUP BY 1,6; +