PNBR#68415 Graag rapport gereserveerde werkplekken vs. daadwerkelijke bezetting

svn path=/Customer/trunk/; revision=52952
This commit is contained in:
Suzan Wiegerinck
2021-09-08 14:34:51 +00:00
parent 9480b2319d
commit 2f126aab73

View File

@@ -9630,6 +9630,221 @@ 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
(
datum,
alg_ruimte_key,
ruimte_nr,
reserveringen
)
AS
SELECT datum,
alg_ruimte_key,
ruimte_nr,
LISTAGG (reservering, ', ')
WITHIN GROUP (ORDER BY datum_res, alg_ruimte_key) reserveringen
FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum
FROM DUAL
CONNECT BY LEVEL <=
TRUNC (SYSDATE)
- ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) tijdlijn,
(SELECT TRUNC (res_rsv_ruimte_van) datum_res,
rmt.alg_ruimte_key,
rmt.ruimte_nr,
CASE
WHEN (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_van, 'HH24'))) <
12
AND (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_tot, 'HH24'))) >
12
THEN
'Hele dag'
WHEN (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_van, 'HH24'))) <
12
AND (TO_NUMBER (
TO_CHAR (res_rsv_ruimte_tot, 'HH24'))) <=
12
THEN
'Ochtend'
WHEN (TO_NUMBER (TO_CHAR (res_rsv_ruimte_van, 'HH24'))) >=
12
THEN
'Middag'
ELSE
'onbekend'
END AS reservering
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)
reservering
WHERE tijdlijn.datum = reservering.datum_res(+)
GROUP BY datum,
datum_res,
alg_ruimte_key,
ruimte_nr
ORDER BY tijdlijn.datum ASC;
CREATE OR REPLACE VIEW pnbr_v_rap_bez_sensor_dagdeel
(
datum,
alg_ruimte_key,
ruimte_nr,
dagdeel,
bezetting_min
)
AS
SELECT tijdlijn.datum,
bez.alg_ruimte_key,
bez.res_ruimte_nr,
bez.dagdeel,
bez.bezetting_min
FROM ( 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
WHERE tijdlijn.datum = bez.datum(+)
ORDER BY tijdlijn.datum DESC;
CREATE OR REPLACE VIEW PNBR_V_RAP_RES_VS_BEZ
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;
------ payload end ------
SET DEFINE OFF