queries
This commit is contained in:
parent
1387a2230c
commit
ec6fc95b91
14
queries/create.sql
Normal file
14
queries/create.sql
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
CREATE TABLE pv_energy_by_month (
|
||||||
|
id serial NOT NULL PRIMARY KEY,
|
||||||
|
month integer NOT NULL,
|
||||||
|
year integer NOT NULL,
|
||||||
|
created_at timestamp NOT NULL DEFAULT now(),
|
||||||
|
last_changed timestamp,
|
||||||
|
update_counter integer NOT NULL DEFAULT 0,
|
||||||
|
baseline_energy real NOT NULL,
|
||||||
|
current_energy real NOT NULL DEFAULT 0.0,
|
||||||
|
CONSTRAINT pv_energy_by_month__month_year_unique UNIQUE(month, year)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
54
queries/pvec.sql
Normal file
54
queries/pvec.sql
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
WITH
|
||||||
|
today AS (
|
||||||
|
SELECT now() AS d
|
||||||
|
),
|
||||||
|
yesterday AS (
|
||||||
|
SELECT date_trunc('day', today.d - '1 day'::interval) AS d,
|
||||||
|
extract(month from today.d - '1 day'::interval) AS m,
|
||||||
|
extract(year from today.d - '1 day'::interval) AS y
|
||||||
|
FROM today
|
||||||
|
),
|
||||||
|
first_pv_of_yesterday AS (
|
||||||
|
SELECT min(measurements.time) as t
|
||||||
|
FROM measurements,
|
||||||
|
yesterday
|
||||||
|
WHERE time >= yesterday.d AND
|
||||||
|
time < yesterday.d + '1 day'::interval AND
|
||||||
|
measurements.application = 'PV'
|
||||||
|
),
|
||||||
|
last_pv_of_yesterday AS (
|
||||||
|
SELECT max(measurements.time) as t
|
||||||
|
FROM measurements,
|
||||||
|
yesterday
|
||||||
|
WHERE time >= yesterday.d AND
|
||||||
|
time < yesterday.d + '1 day'::interval AND
|
||||||
|
measurements.application = 'PV'
|
||||||
|
),
|
||||||
|
first_pv_energy_of_yesterday AS (
|
||||||
|
SELECT cast(measurements.values->'ExportEnergyActive'->>'value' AS real) AS e
|
||||||
|
FROM measurements,
|
||||||
|
first_pv_of_yesterday
|
||||||
|
WHERE measurements.time = first_pv_of_yesterday.t AND
|
||||||
|
measurements.application = 'PV'
|
||||||
|
),
|
||||||
|
last_pv_energy_of_yesterday AS (
|
||||||
|
SELECT cast(measurements.values->'ExportEnergyActive'->>'value' AS real) AS e
|
||||||
|
FROM measurements,
|
||||||
|
last_pv_of_yesterday
|
||||||
|
WHERE measurements.time = last_pv_of_yesterday.t AND
|
||||||
|
measurements.application = 'PV'
|
||||||
|
)
|
||||||
|
INSERT INTO pv_energy_by_month
|
||||||
|
(month, year, baseline_energy)
|
||||||
|
VALUES(
|
||||||
|
(SELECT m FROM yesterday),
|
||||||
|
(SELECT y FROM yesterday),
|
||||||
|
(SELECT e FROM first_pv_energy_of_yesterday)
|
||||||
|
)
|
||||||
|
ON CONFLICT ON CONSTRAINT pv_energy_by_month__month_year_unique
|
||||||
|
DO UPDATE
|
||||||
|
SET last_changed = now(),
|
||||||
|
update_counter = pv_energy_by_month.update_counter + 1,
|
||||||
|
current_energy = (SELECT e FROM last_pv_energy_of_yesterday) - pv_energy_by_month.baseline_energy;
|
||||||
|
|
||||||
|
COMMIT;
|
10
queries/recreate.sh
Executable file
10
queries/recreate.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
sv() {
|
||||||
|
cat pvec.sql | sed 's/%Y%/'$1'/' | sed 's/%M%/'$2'/' | sed 's/%D%/'$3'/' | psql -d udi-hottis
|
||||||
|
}
|
||||||
|
|
||||||
|
sv 2025 01 02
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user