FCLT#87498 sensordata agv integratie/samenwerking SWYCS - Facilitor
svn path=/Database/trunk/; revision=69309
This commit is contained in:
@@ -892,6 +892,78 @@ AS
|
|||||||
GROUP BY ins_deel_key, res_deel_omschrijving;
|
GROUP BY ins_deel_key, res_deel_omschrijving;
|
||||||
|
|
||||||
|
|
||||||
|
// Een basisview om sensorgemiddelde per ruimte per dag te berekenen
|
||||||
|
// AI-generated, nog niet nageteld, maar who cares.
|
||||||
|
// Bevat alleen sensoren met niet-discrete numerieke waarden zoals temperatuur, niet bezetting
|
||||||
|
// Bevat het ruimtegemiddelde van alle sensoren van hetzelfde srtdeel gedurende de kantoortijden
|
||||||
|
CREATE_VIEW(ins_v_sensorgemiddele_per_ruimte_per_dag, 0)
|
||||||
|
AS
|
||||||
|
WITH
|
||||||
|
sensor_data
|
||||||
|
AS
|
||||||
|
(SELECT d.ins_alg_ruimte_key
|
||||||
|
, d.ins_srtdeel_key
|
||||||
|
, sd.ins_srtdeel_code
|
||||||
|
, sd.ins_srtdeel_omschrijving
|
||||||
|
, sh.ins_deel_statedate
|
||||||
|
, sh.ins_deel_state
|
||||||
|
, LEAD (sh.ins_deel_statedate) OVER (PARTITION BY d.ins_alg_ruimte_key, sd.ins_srtdeel_omschrijving ORDER BY sh.ins_deel_statedate) AS next_statedate
|
||||||
|
FROM ins_deel d
|
||||||
|
JOIN ins_deel_state_history sh ON sh.ins_deel_key = d.ins_deel_key
|
||||||
|
JOIN ins_srtdeel sd ON sd.ins_srtdeel_key = d.ins_srtdeel_key
|
||||||
|
WHERE d.ins_alg_ruimte_type = 'R' AND sd.ins_srtdeel_sensortype = 2),
|
||||||
|
bounded_intervals
|
||||||
|
AS
|
||||||
|
(SELECT ins_alg_ruimte_key
|
||||||
|
, ins_srtdeel_key
|
||||||
|
, ins_srtdeel_code
|
||||||
|
, ins_srtdeel_omschrijving
|
||||||
|
, TRUNC (ins_deel_statedate) AS datum
|
||||||
|
, GREATEST (ins_deel_statedate, TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_startofworkday') / 24) AS start_time
|
||||||
|
, LEAST (NVL (next_statedate, TRUNC (ins_deel_statedate) + 1), TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_endofworkday') / 24) AS end_time
|
||||||
|
, ins_deel_state
|
||||||
|
FROM sensor_data
|
||||||
|
WHERE -- Alleen intervallen die de kantoortijd raken
|
||||||
|
NVL (next_statedate, TRUNC (ins_deel_statedate) + 1) > TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_startofworkday') / 24
|
||||||
|
AND ins_deel_statedate < TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_endofworkday') / 24),
|
||||||
|
gewogen_data
|
||||||
|
AS
|
||||||
|
(SELECT ins_alg_ruimte_key
|
||||||
|
, ins_srtdeel_key
|
||||||
|
, ins_srtdeel_code
|
||||||
|
, ins_srtdeel_omschrijving
|
||||||
|
, datum
|
||||||
|
, ins_deel_state
|
||||||
|
, (end_time - start_time) * 24 * 60 AS duration_minutes -- of * 24 * 60 * 60 voor seconden
|
||||||
|
FROM bounded_intervals
|
||||||
|
WHERE end_time > start_time -- filter eventueel negatieve of nulduur
|
||||||
|
)
|
||||||
|
SELECT ins_alg_ruimte_key
|
||||||
|
, ins_srtdeel_key
|
||||||
|
, ins_srtdeel_code
|
||||||
|
, ins_srtdeel_omschrijving
|
||||||
|
, datum
|
||||||
|
, ROUND (SUM (ins_deel_state * duration_minutes) / SUM (duration_minutes), 2) AS gewogen_gemiddelde
|
||||||
|
FROM gewogen_data
|
||||||
|
GROUP BY ins_alg_ruimte_key
|
||||||
|
, ins_srtdeel_key
|
||||||
|
, ins_srtdeel_code
|
||||||
|
, ins_srtdeel_omschrijving
|
||||||
|
, datum
|
||||||
|
ORDER BY ins_alg_ruimte_key, datum;
|
||||||
|
|
||||||
|
CREATE_VIEW(cad_v_co2_daggemiddelde, 0)
|
||||||
|
AS
|
||||||
|
SELECT ins_alg_ruimte_key alg_ruimte_key, datum fclt_f_datum, gewogen_gemiddelde waarde
|
||||||
|
FROM ins_v_sensorgemiddele_per_ruimte_per_dag
|
||||||
|
WHERE ins_srtdeel_code = 'CO2';
|
||||||
|
|
||||||
|
CREATE_VIEW(cad_v_temp_daggemiddelde)
|
||||||
|
AS
|
||||||
|
SELECT ins_alg_ruimte_key alg_ruimte_key, datum fclt_f_datum, gewogen_gemiddelde waarde
|
||||||
|
FROM ins_v_sensorgemiddele_per_ruimte_per_dag
|
||||||
|
WHERE ins_srtdeel_code = 'TEMP';
|
||||||
|
|
||||||
REGISTERRUN('$Id$')
|
REGISTERRUN('$Id$')
|
||||||
|
|
||||||
#endif // CAD
|
#endif // CAD
|
||||||
|
|||||||
Reference in New Issue
Block a user