PNBR#68415 Graag rapport gereserveerde werkplekken vs. daadwerkelijke bezetting

svn path=/Customer/trunk/; revision=53288
This commit is contained in:
Suzan Wiegerinck
2021-10-06 14:13:18 +00:00
parent 08e21a3024
commit acd95170cd

View File

@@ -9630,15 +9630,18 @@ AS
AND arr.res_rsv_ruimte_host_key = p.prs_perslid_key) res -- Bezet
WHERE datums.datum = res.datum(+);
CREATE OR REPLACE VIEW PNBR_V_RAP_RES_TEAMRUIMTE
CREATE OR REPLACE VIEW pnbr_v_rap_res_teamruimte
(
datum,
datum,
HOST,
alg_ruimte_key,
ruimte_nr,
reserveringen
)
AS
SELECT datum,
SELECT datum,
HOST,
alg_ruimte_key,
ruimte_nr,
LISTAGG (reservering, ', ')
@@ -9648,34 +9651,36 @@ AS
CONNECT BY LEVEL <=
TRUNC (SYSDATE)
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) tijdlijn,
(SELECT TRUNC (res_rsv_ruimte_van) datum_res,
(SELECT TRUNC (res_rsv_ruimte_van) datum_res,
p.prs_perslid_naam_friendly HOST,
rmt.alg_ruimte_key,
rmt.ruimte_nr,
CASE
WHEN (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_van, 'HH24'))) <
TO_CHAR (res_rsv_ruimte_van, 'hh24'))) <
12
AND (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_tot, 'HH24'))) >
TO_CHAR (res_rsv_ruimte_tot, 'hh24'))) >
12
THEN
'Hele dag'
'hele dag'
WHEN (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_van, 'HH24'))) <
TO_CHAR (res_rsv_ruimte_van, 'hh24'))) <
12
AND (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_tot, 'HH24'))) <=
TO_CHAR (res_rsv_ruimte_tot, 'hh24'))) <=
12
THEN
'Ochtend'
WHEN (TO_NUMBER (TO_CHAR (res_rsv_ruimte_van, 'HH24'))) >=
'ochtend'
WHEN (TO_NUMBER (TO_CHAR (res_rsv_ruimte_van, 'hh24'))) >=
12
THEN
'Middag'
'middag'
ELSE
'onbekend'
END AS reservering
FROM res_rsv_ruimte res,
END AS reservering
FROM res_rsv_ruimte res,
prs_v_perslid_fullnames_all p,
( SELECT res_rsv_ruimte_key,
rr.res_ruimte_nr,
MAX (ra.alg_ruimte_key) alg_ruimte_key,
@@ -9693,158 +9698,268 @@ AS
GROUP BY res_rsv_ruimte_key, rr.res_ruimte_nr) rmt
WHERE res.res_rsv_ruimte_verwijder IS NULL
AND res.res_activiteit_key = 370
AND res.res_rsv_ruimte_key = rmt.res_rsv_ruimte_key)
AND res.res_rsv_ruimte_key = rmt.res_rsv_ruimte_key
AND res.res_rsv_ruimte_host_key = p.prs_perslid_key)
reservering
WHERE tijdlijn.datum = reservering.datum_res(+)
GROUP BY datum,
datum_res,
alg_ruimte_key,
ruimte_nr
ruimte_nr,
HOST
ORDER BY tijdlijn.datum ASC;
CREATE OR REPLACE VIEW PNBR_V_BEZ_SENSOR_DAGDEEL
AS
SELECT TRUNC (stat_his.ins_deel_statedate) datum,
r.alg_ruimte_key,
r.alg_ruimte_omschrijving,
CASE -- na 12 uur bezet tellen we mee voor de middag , voor 12 uur tellen we mee voor de ochtend
WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) <
12
THEN
'Ochtend'
WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) >=
12
THEN
'Middag'
ELSE
'Onbekend'
END AS dagdeel,
SUM (stat_his.duur_status) bez_minuten,
COUNT (DISTINCT stat_his.ins_deel_key) aant_sensoren,
ROUND (
SUM (stat_his.duur_status)
/ COUNT (DISTINCT stat_his.ins_deel_key),
0) gem_bez_sensor
FROM ins_deel d,
alg_ruimte r,
(SELECT ranking,
ins_deel_key,
ins_deel_state,
ins_deel_statedate,
( ins_deel_statedate
- LAG (ins_deel_statedate)
OVER (PARTITION BY ins_deel_key ORDER BY ranking))
* -1440 AS duur_status --- duur van de status in minuten
FROM (SELECT ins_deel_key,
ins_deel_state,
ins_deel_statedate,
RANK ()
OVER (
PARTITION BY ins_deel_key
ORDER BY ins_deel_key, ins_deel_statedate DESC) AS ranking
FROM ins_deel_state_history) rank_state) stat_his,
alg_ruimte rmt
WHERE d.ins_deel_key = stat_his.ins_deel_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND d.ins_srtdeel_key = 3521 --- alleen sensoren van hi-technologies
AND stat_his.ins_deel_state = 1 -- voor de management info houden we het simpel: wat bezet is bewaren we
AND r.alg_ruimte_key = rmt.alg_ruimte_key
AND TRUNC (stat_his.ins_deel_statedate) =
TO_DATE ('5-7-2021', 'dd-mm-yyyy')
GROUP BY TRUNC (stat_his.ins_deel_statedate),
r.alg_ruimte_key,
r.alg_ruimte_omschrijving,
CASE -- na 12 uur bezet tellen we mee voor de middag , voor 12 uur tellen we mee voor de ochtend
WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) <
12
THEN
'Ochtend'
WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) >=
12
THEN
'Middag'
ELSE
'Onbekend'
END;
CREATE OR REPLACE VIEW pnbr_v_rap_bez_sensor_dagdeel
CREATE OR REPLACE VIEW PNBR_V_RAP_BEZ_SENSOR_DAGDEEL
(
datum,
alg_ruimte_key,
ruimte_nr,
dagdeel,
bezetting_min
DATUM,
ALG_RUIMTE_KEY,
RUIMTE_OMSCHRIJVING,
DAGDEEL,
BEZ_MINUTEN,
AANT_SENSOREN,
GEM_BEZ_SENSOR
)
AS
SELECT tijdlijn.datum,
bez.alg_ruimte_key,
bez.res_ruimte_nr,
bez.alg_ruimte_omschrijving,
bez.dagdeel,
bez.bezetting_min
FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum
bez.bez_minuten,
bez.aant_sensoren,
bez.gem_bez_sensor
FROM pnbr_v_bez_sensor_dagdeel bez,
( SELECT TRUNC (SYSDATE) - LEVEL datum
FROM DUAL
CONNECT BY LEVEL <=
TRUNC (SYSDATE)
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) tijdlijn,
( SELECT trunc(stat_his.ins_deel_statedate ) datum,
r.alg_ruimte_key,
rmt.res_ruimte_nr,
CASE -- na 12 uur bezet tellen we mee voor de middag , voor 12 uur tellen we mee voor de ochtend
WHEN TO_NUMBER (
TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) <
12
THEN
'Ochtend'
WHEN TO_NUMBER (
TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) >=
12
THEN
'Middag'
ELSE
'Onbekend'
END AS dagdeel,
SUM (stat_his.duur_status) bezetting_min
FROM ins_deel d,
alg_ruimte r,
(SELECT ranking,
ins_deel_key,
ins_deel_state,
ins_deel_statedate,
( ins_deel_statedate
- LAG (ins_deel_statedate)
OVER (PARTITION BY ins_deel_key
ORDER BY ranking))
* -1440 AS duur_status --- duur van de status in minuten
FROM (SELECT ins_deel_key,
ins_deel_state,
ins_deel_statedate,
RANK ()
OVER (
PARTITION BY ins_deel_key
ORDER BY
ins_deel_key,
ins_deel_statedate DESC) AS ranking
FROM ins_deel_state_history) rank_state)
stat_his,
( SELECT rmt.alg_ruimte_key, res_ruimte_nr FROM res_rsv_ruimte res,
( SELECT res_rsv_ruimte_key,
rr.res_ruimte_nr,
MAX (ra.alg_ruimte_key) alg_ruimte_key,
MAX (rr.res_ruimte_nr) ruimte_nr
FROM res_rsv_ruimte r,
res_ruimte_opstelling ro,
res_ruimte rr,
res_alg_ruimte ra
WHERE r.res_rsv_ruimte_verwijder IS NULL
AND r.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_key = ra.res_ruimte_key
AND r.res_rsv_ruimte_dirtlevel = 0
GROUP BY res_rsv_ruimte_key, rr.res_ruimte_nr) rmt
WHERE res.res_rsv_ruimte_verwijder IS NULL
AND res.res_activiteit_key = 370
AND res.res_rsv_ruimte_key = rmt.res_rsv_ruimte_key) rmt
WHERE d.ins_deel_key = stat_his.ins_deel_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND d.ins_srtdeel_key = 3521 --- alleen sensoren van hi-technologies
AND stat_his.ins_deel_state = 1 -- voor de management info houden we het simpel: wat bezet is bewaren we
AND r.alg_ruimte_key = rmt.alg_ruimte_key
GROUP BY stat_his.ins_deel_statedate,
r.alg_ruimte_key,
rmt.res_ruimte_nr,
CASE -- na 12 uur bezet tellen we mee voor de middag , voor 12 uur tellen we mee voor de ochtend
WHEN TO_NUMBER (
TO_CHAR (stat_his.ins_deel_statedate,
'HH24')) <
12
THEN
'Ochtend'
WHEN TO_NUMBER (
TO_CHAR (stat_his.ins_deel_statedate,
'HH24')) >=
12
THEN
'Middag'
ELSE
'Onbekend'
END) bez
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) tijdlijn
WHERE tijdlijn.datum = bez.datum(+)
ORDER BY tijdlijn.datum DESC;
ORDER BY tijdlijn.datum DESC, bez.alg_ruimte_key, bez.dagdeel desc;
CREATE OR REPLACE VIEW PNBR_V_RAP_RES_VS_BEZ
(
datum,
alg_ruimte_key,
HOST,
ruimte_nr,
reserveringen,
ruimte_omschrijving,
bez_minuten_ochtend,
aant_sensoren_ochtend,
gem_bez_sensor_ochtend,
bez_minuten_middag,
aant_sensoren_middag,
gem_bez_sensor_middag
)
AS
SELECT *
FROM (SELECT *
FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum
FROM DUAL
CONNECT BY LEVEL <=
TRUNC (SYSDATE)
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3))
JOIN pnbr_v_rap_res_teamruimte USING (datum))
FULL JOIN
(SELECT *
FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum
FROM DUAL
CONNECT BY LEVEL <=
TRUNC (SYSDATE)
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3))
JOIN
( SELECT datum,
alg_ruimte_key,
ruimte_nr,
SUM (
CASE
WHEN dagdeel = 'Middag' THEN bezetting_min
ELSE NULL
END) middag,
SUM (
CASE
WHEN dagdeel = 'Ochtend' THEN bezetting_min
ELSE NULL
END) ochtend
FROM pnbr_v_rap_bez_sensor_dagdeel
GROUP BY datum, alg_ruimte_key, ruimte_nr)
USING (datum))
USING (datum, alg_ruimte_key, ruimte_nr)
ORDER BY datum;
SELECT DISTINCT datum,
alg_ruimte_key,
HOST,
ruimte_nr,
reserveringen,
ruimte_omschrijving,
bez_minuten_ochtend,
aant_sensoren_ochtend,
gem_bez_sensor_ochtend,
bez_minuten_middag,
aant_sensoren_middag,
gem_bez_sensor_middag
FROM (SELECT *
FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum
FROM DUAL
CONNECT BY LEVEL <=
TRUNC (SYSDATE)
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3))
JOIN pnbr_v_rap_res_teamruimte USING (datum))
FULL JOIN
(SELECT *
FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum
FROM DUAL
CONNECT BY LEVEL <=
TRUNC (SYSDATE)
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3))
JOIN
( SELECT datum,
alg_ruimte_key,
ruimte_omschrijving,
SUM (
CASE
WHEN dagdeel = 'Ochtend' THEN bez_minuten
ELSE NULL
END) bez_minuten_ochtend,
SUM (
CASE
WHEN dagdeel = 'Ochtend'
THEN
aant_sensoren
ELSE
NULL
END) aant_sensoren_ochtend,
SUM (
CASE
WHEN dagdeel = 'Ochtend'
THEN
gem_bez_sensor
ELSE
NULL
END) gem_bez_sensor_ochtend,
SUM (
CASE
WHEN dagdeel = 'Middag' THEN bez_minuten
ELSE NULL
END) bez_minuten_middag,
SUM (
CASE
WHEN dagdeel = 'Middag' THEN aant_sensoren
ELSE NULL
END) aant_sensoren_middag,
SUM (
CASE
WHEN dagdeel = 'Middag'
THEN
gem_bez_sensor
ELSE
NULL
END) gem_bez_sensor_middag
FROM pnbr_v_rap_bez_sensor_dagdeel
GROUP BY datum, alg_ruimte_key, ruimte_omschrijving
ORDER BY datum DESC)
USING (datum))
USING (datum, alg_ruimte_key)
ORDER BY datum;
CREATE OR REPLACE VIEW PNBR_V_RAP_BEZ_VERDIEPING
AS
SELECT bezetting.datum,
TO_CHAR (bezetting.datum, 'DAY') dag,
bezetting.alg_verdieping_volgnr,
aant_verd.aant_sensoren,
aant_verd.max_bez_minuten_dagdeel,
SUM (bezetting.bez_minuten_ochtend) tot_bez_ochtend,
ROUND (
( SUM (bezetting.bez_minuten_ochtend)
/ aant_verd.max_bez_minuten_dagdeel)
* 100) perc_bez_ochtend,
SUM (bezetting.bez_minuten_middag) tot_bez_middag,
ROUND (
( SUM (bezetting.bez_minuten_middag)
/ aant_verd.max_bez_minuten_dagdeel)
* 100) perc_bez_middag
FROM ( SELECT b.datum,
v.alg_verdieping_volgnr,
v.alg_verdieping_key,
b.alg_ruimte_key,
SUM (
CASE
WHEN b.dagdeel = 'Ochtend' THEN b.bez_minuten
ELSE NULL
END) bez_minuten_ochtend,
SUM (
CASE
WHEN b.dagdeel = 'Middag' THEN b.bez_minuten
ELSE NULL
END) bez_minuten_middag
FROM pnbr_v_rap_bez_sensor_dagdeel b,
(SELECT r.alg_ruimte_key,
v.alg_verdieping_key,
v.alg_verdieping_volgnr
FROM alg_ruimte r, alg_verdieping v
WHERE v.alg_verdieping_key = r.alg_verdieping_key) v
WHERE b.alg_ruimte_key = v.alg_ruimte_key(+)
GROUP BY b.datum,
v.alg_verdieping_key,
v.alg_verdieping_volgnr,
b.alg_ruimte_key,
b.ruimte_omschrijving
ORDER BY datum DESC, v.alg_verdieping_volgnr) bezetting,
( SELECT g.alg_gebouw_omschrijving,
v.alg_verdieping_key,
COUNT (d.ins_deel_key) aant_sensoren,
240 * COUNT (d.ins_deel_key) max_bez_minuten_dagdeel
FROM alg_gebouw g,
alg_verdieping v,
alg_ruimte r,
ins_deel d
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = d.ins_alg_ruimte_key
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_srtdeel_key = 3521 --- alleen sensoren van hi-technologies
AND d.ins_deel_verwijder IS NULL
GROUP BY g.alg_gebouw_omschrijving, v.alg_verdieping_key
ORDER BY g.alg_gebouw_omschrijving) aant_verd
WHERE bezetting.alg_verdieping_key = aant_verd.alg_verdieping_key(+)
GROUP BY bezetting.datum,
bezetting.alg_verdieping_volgnr,
aant_verd.aant_sensoren,
aant_verd.max_bez_minuten_dagdeel
ORDER BY bezetting.datum, bezetting.alg_verdieping_volgnr;
------ payload end ------
SET DEFINE OFF