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;
|
||||
|
||||
|
||||
// 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$')
|
||||
|
||||
#endif // CAD
|
||||
|
||||
Reference in New Issue
Block a user