— summary Sql to determine how many business unit in use and how many set id they use, to understand fucntional complexity.
SELECT DISTINCT DECODE(LMC,1,'LOW',2,'MEDIUM',3,'HIGH'),
COUNT(LMC) OVER (PARTITION BY LMC) AS CNT_BU_BLOCK ,
MAX(SETID_CNT) OVER() AS MAX_setid_cnt ,
MIN(SETID_CNT) OVER() AS MIN_setid_cnt,
COUNT(bu) over() AS BU_total_CNT
FROM
( SELECT DISTINCT NTILe(3) OVER ( ORDER BY SETID_CNT) AS LMC,
B.*
FROM
( SELECT DISTINCT SETCNTRLVALUE AS BU,
COUNT(setid) over(partition BY SETCNTRLVALUE ) AS SETID_CNT
FROM
( SELECT DISTINCT SETCNTRLVALUE,setid FROM PS_SET_CNTRL_REC
)
) b
ORDER BY 1 DESC,
2 DESC
);
— detailed Sql to determine how many business unit in use and how many set id they use, to understand fucntional complexity.
SELECT DISTINCT SETCNTRLVALUE AS BU,
COUNT(setid) over(partition BY SETCNTRLVALUE ) AS SETID_CNT
FROM
( SELECT DISTINCT SETCNTRLVALUE,setid FROM PS_SET_CNTRL_REC
)
ORDER BY 2 DESC;
—summary sql to determine of complexity of peoplecode.
SELECT DISTINCT DECODE(LMC,1,'LOW',2,'MEDIUM',3,'HIGH'),
COUNT(LMC) OVER (PARTITION BY LMC) AS CNT_code_BLOCK ,
MAX(proglen1) OVER() AS MAX_Code_len ,
MIN(proglen1) OVER() AS MIN_Code_len
FROM
(SELECT NTILe(3) OVER ( ORDER BY proglen1) AS LMC,
B.*
FROM
(SELECT SUM(proglen) over (partition BY objectvalue1,objectvalue2,objectvalue3,objectvalue4,objectvalue5,objectvalue6,objectvalue7) AS proglen1,
a.*
FROM PSPCMPROG a
WHERE a.LASTUPDOPRID <>'PPLSOFT'
ORDER BY objectvalue1,
objectvalue2,
objectvalue3,
objectvalue4,
objectvalue5,
objectvalue6,
objectvalue7,
a.PROGSEQ DESC
) B
ORDER BY NTILe(3) OVER ( ORDER BY proglen1) DESC ,
proglen1 DESC ,
objectvalue1,
objectvalue2,
objectvalue3,
objectvalue4,
objectvalue5,
objectvalue6,
objectvalue7,
PROGSEQ
) ;
details for peopecode based on char they contains
SELECT NTILe(3) OVER ( ORDER BY proglen1) AS LMC,
B.*
FROM
(SELECT SUM(proglen) over (partition BY objectvalue1,objectvalue2,objectvalue3,objectvalue4,objectvalue5,objectvalue6,objectvalue7) AS proglen1,
a.*
FROM PSPCMPROG a
WHERE a.LASTUPDOPRID <>'PPLSOFT'
ORDER BY objectvalue1,
objectvalue2,
objectvalue3,
objectvalue4,
objectvalue5,
objectvalue6,
objectvalue7,
a.PROGSEQ DESC
) B
ORDER BY NTILe(3) OVER ( ORDER BY proglen1) DESC ,
proglen1 DESC ,
objectvalue1,
objectvalue2,
objectvalue3,
objectvalue4,
objectvalue5,
objectvalue6,
objectvalue7,
PROGSEQ ;
-summary Sql to determine sql objects complexity based on their length
SELECT DISTINCT DECODE(LMC,1,'LOW',2,'MEDIUM',3,'HIGH'),
COUNT(LMC) OVER (PARTITION BY LMC) AS CNT_SQL_BLOCK ,
MAX(sqllen) OVER() AS MAX_sql_len ,
MIN(sqllen) OVER() AS MIN_sql_len
FROM
( SELECT DISTINCT NTILe(3) OVER ( ORDER BY sqllen) AS LMC,
b.sqllen,
COUNT(SQLID) over() AS sql_count
FROM
(SELECT a.sqlid,
dbms_lob.getlength(sqltext) AS sqllen
FROM PSSQLTEXTDEFN a ,
PSSQLDEFN b
WHERE a.sqlid =b.sqlid
AND b.LASTUPDOPRID <> 'PPLSOFT'
AND dbms_lob.getlength(sqltext) >1
) b
);
-Sql to determine sql objects details based on their length
SELECT DISTINCT NTILe(3) OVER ( ORDER BY sqllen) AS LMC,
b.sqllen,
COUNT(SQLID) over() AS sql_count,
b.*
FROM
(SELECT a.sqlid,
dbms_lob.getlength(sqltext) AS sqllen
FROM PSSQLTEXTDEFN a ,
PSSQLDEFN b
WHERE a.sqlid =b.sqlid
AND b.LASTUPDOPRID <> 'PPLSOFT'
AND dbms_lob.getlength(sqltext) >1
) b
ORDER BY 2 DESC ;
summary Sql to determine query complexity based on number of where clause.
SELECT DISTINCT COUNT2 AS COUNT_OF_QUERY,
DECODE(LMC,1,'LOW',2,'MEDIUM',3,'HIGH'),
COUNT(LMC) OVER (PARTITION BY LMC) AS qUERY_BLOCK,
MAX(MAX_CRIT_CNT) OVER() AS MAX_CRIT,
MIN(MAX_CRIT_CNT) OVER() AS MIN_CRIT
FROM
( SELECT DISTINCT COUNT(1) OVER () AS COUNT2, oprid,
QRYNAME,
MAX_CRIT_CNT,
NTILe(3) OVER ( ORDER BY MAX_CRIT_CNT) AS LMC
FROM
( SELECT DISTINCT OPRID,
QRYNAME,
MAX(CRTNUM) OVER (PARTITION BY OPRID, QRYNAME) AS MAX_CRIT_CNT
FROM PSQRYCRITERIA
WHERE (QRYNAME, OPRID) IN
(SELECT QRYNAME, OPRID FROM psqrydefn WHERE LASTUPDOPRID <> 'PPLSOFT'
)
)
ORDER BY 3 DESC
);
— detail Sql to determine customized query base on where clause
SELECT DISTINCT
oprid,
QRYNAME,
MAX_CRIT_CNT,
NTILe(3) OVER ( ORDER BY MAX_CRIT_CNT) AS LMC
FROM
( SELECT DISTINCT OPRID,
QRYNAME,
MAX(CRTNUM) OVER (PARTITION BY OPRID, QRYNAME) AS MAX_CRIT_CNT
FROM PSQRYCRITERIA
WHERE (QRYNAME, OPRID) IN
(SELECT QRYNAME, OPRID FROM psqrydefn WHERE LASTUPDOPRID <> 'PPLSOFT'
)
)
ORDER BY 2 DESC;
Forum category: Forum / Hints, Tips & Gotchas
Forum thread: Statistical model to determine complexity in PeopleSoft customization