removed all params

This commit is contained in:
Dona Maria Absi
2025-04-23 14:54:09 +03:00
parent 6bc068c5e6
commit 516a885251
2 changed files with 5 additions and 103 deletions

View File

@ -1,14 +1,4 @@
WITH params AS (
SELECT
NULL::uuid AS device_id, -- filter: specific device (or NULL for all)
NULL::date AS input_date, -- filter: start date (or NULL for open range)
NULL::text AS event_month, -- filter: MM-YYYY (or NULL for all)
NULL::text AS event_year, -- filter: YYYY (or NULL for all)
NULL::int AS hour, -- filter: hour of day (or NULL for all hours)
NULL::int AS min_kw -- filter: min kW consumed (or NULL for no filter)
),
total_energy AS (
WITH total_energy AS (
SELECT
log.device_id,
log.event_time::date AS date,
@ -17,14 +7,8 @@ total_energy AS (
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, params
FROM "device-status-log" log
WHERE log.code = 'EnergyConsumed'
AND (params.device_id IS NULL OR log.device_id = params.device_id)
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
AND (params.event_month IS NULL OR TO_CHAR(log.event_time, 'MM-YYYY') = params.event_month)
AND (params.event_year IS NULL OR TO_CHAR(EXTRACT(YEAR FROM log.event_time), 'FM9999') = params.event_year)
GROUP BY 1,2,3,4,5
),
@ -37,14 +21,8 @@ energy_phase_A AS (
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, params
FROM "device-status-log" log
WHERE log.code = 'EnergyConsumedA'
AND (params.device_id IS NULL OR log.device_id = params.device_id)
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
AND (params.event_month IS NULL OR TO_CHAR(log.event_time, 'MM-YYYY') = params.event_month)
AND (params.event_year IS NULL OR TO_CHAR(EXTRACT(YEAR FROM log.event_time), 'FM9999') = params.event_year)
GROUP BY 1,2,3,4,5
),
@ -57,14 +35,8 @@ energy_phase_B AS (
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, params
FROM "device-status-log" log
WHERE log.code = 'EnergyConsumedB'
AND (params.device_id IS NULL OR log.device_id = params.device_id)
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
AND (params.event_month IS NULL OR TO_CHAR(log.event_time, 'MM-YYYY') = params.event_month)
AND (params.event_year IS NULL OR TO_CHAR(EXTRACT(YEAR FROM log.event_time), 'FM9999') = params.event_year)
GROUP BY 1,2,3,4,5
),
@ -77,14 +49,8 @@ energy_phase_C AS (
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, params
FROM "device-status-log" log
WHERE log.code = 'EnergyConsumedC'
AND (params.device_id IS NULL OR log.device_id = params.device_id)
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
AND (params.event_month IS NULL OR TO_CHAR(log.event_time, 'MM-YYYY') = params.event_month)
AND (params.event_year IS NULL OR TO_CHAR(EXTRACT(YEAR FROM log.event_time), 'FM9999') = params.event_year)
GROUP BY 1,2,3,4,5
)
@ -102,6 +68,4 @@ 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
JOIN params p ON TRUE
WHERE (p.min_kw IS NULL OR (t.max_value - t.min_value) >= p.min_kw)
ORDER BY 1,2;

View File

@ -1,62 +0,0 @@
WITH params AS (
SELECT
'd72f3d5d-02e5-4a9e-a1f7-7ab8c3534910'::uuid AS device_id,
NULL::date AS input_date, -- e.g., '2025-03-07'
NULL::text AS event_month, -- e.g., '03-2025'
'2025'::text AS event_year, -- e.g., '2025'
NULL::int AS hour,
NULL::int AS min_kw
),
log_data AS (
SELECT
log.device_id,
log.event_time::date AS date,
EXTRACT(HOUR FROM log.event_time)::int AS hour,
TO_CHAR(log.event_time, 'MM-YYYY') AS month,
TO_CHAR(EXTRACT(YEAR FROM log.event_time), 'FM9999') AS year,
log.code,
log.value::numeric AS value
FROM "device-status-log" log, params
WHERE (params.device_id IS NULL OR log.device_id = params.device_id)
AND (params.event_year IS NULL OR TO_CHAR(EXTRACT(YEAR FROM log.event_time), 'FM9999') = params.event_year)
AND (params.event_month IS NULL OR TO_CHAR(log.event_time, 'MM-YYYY') = params.event_month)
AND (params.input_date IS NULL OR log.event_time::date = params.input_date)
),
base_data AS (
SELECT
device_id,
CASE
WHEN (SELECT input_date FROM params) IS NOT NULL THEN date::text
WHEN (SELECT event_month FROM params) IS NOT NULL THEN date::text
ELSE month
END AS group_by_field,
CASE
WHEN (SELECT input_date FROM params) IS NOT NULL THEN hour
ELSE NULL
END AS hour,
code,
MIN(value)::int AS min_value,
MAX(value)::int AS max_value
FROM log_data
GROUP BY 1,2,3,4
),
pivoted AS (
SELECT
device_id,
group_by_field,
hour,
MAX(CASE WHEN code = 'EnergyConsumed' THEN max_value - min_value END) AS energy_consumed_kw,
MAX(CASE WHEN code = 'EnergyConsumedA' THEN max_value - min_value END) AS energy_consumed_a,
MAX(CASE WHEN code = 'EnergyConsumedB' THEN max_value - min_value END) AS energy_consumed_b,
MAX(CASE WHEN code = 'EnergyConsumedC' THEN max_value - min_value END) AS energy_consumed_c
FROM base_data
GROUP BY 1,2,3
)
SELECT *
FROM pivoted, params
WHERE (params.min_kw IS NULL OR energy_consumed_kw >= params.min_kw)
ORDER BY pivoted.group_by_field, pivoted.hour;