diff --git a/CAD/CAD_VIE.SRC b/CAD/CAD_VIE.SRC index ea94e730..ceac4e33 100644 --- a/CAD/CAD_VIE.SRC +++ b/CAD/CAD_VIE.SRC @@ -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