diff --git a/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv b/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv
index be98667..f373d12 100644
--- a/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv
+++ b/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv
@@ -265,3 +265,8 @@
"20230228","3007520303",,"131365107007520220527250184198","HT0107503070220220531004",,,,,,,,,,,,"1000000.000000",,,,,,,,,,,,,,,,,,,,,,,
"20230228","3007698100",,"JJ0103520420230112001","HT0103503010220230112001",,,,,,,,,,,,"3950000.000000",,,,,,,,,,,,,,,,,,,,,,,
"20230228","3007545797",,"JJ0101820420220930001","HT0101803010920220929001",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,,,,,,,,,,,,
+"20240630","1",,"12345678","HT0101803010920220929001",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"30",,,,,,,,,,,
+"20240630","2",,"223456789","HT01018030109202209294",,,,,,,,,,,,"550000.000000",,,,,"61.000000","1001.000000",,,,,,"",,,,,,,,,,,
+"20240630","3",,"223456789","HT01018030109202209295",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"","1",,,,,,,,,,
+"20240630","4",,"323456789","HT01018030109202209296",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"","",,,,"3.000000",,,,,,
+"20240630","5",,"623456789","HT01018030109202209296",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"","",,,,"3.000000",,,,,,
\ No newline at end of file
diff --git a/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv b/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv
index 6471200..2af189d 100644
--- a/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv
+++ b/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv
@@ -150,50 +150,99 @@ SELECT
ELSE '高度' END AS RISK_LEVEL\,
C.NORMAL_CNT\,C.DEF_CNT\,C.CUST_CNT
FROM B LEFT JOIN C ON C.EFFECTIVE_Y = B.EFFECTIVE_Y",,,,,,
-"2","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","MYSQL","WITH A AS (
- SELECT
+"12","rptRatingDistribution","客户评级分布报表","DM DBMS","WITH A AS (
+ SELECT
+ T.ORIGINAL_LEVEL AS FINAL_LEVEL
+ \,T.ORDER_NUM
+ \,COUNT(1) AS CUST_CNT
+ \,SUM(IFNULL(T.BORR_BAL\,0)) AS BORR_BAL
+ \,SUM(CASE WHEN T.EFFECTIVE_MONTH = CAST( DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) THEN 1 ELSE 0 END) AS CURR_INCT_CNT
+ \,SUM(CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END) AS DEF_CUST_CNT
+ FROM (
+ SELECT
+ V.CUST_NO\,
+ V.ORIGINAL_LEVEL\,
+ V.ORDER_NUM\,
+ V.FINAL_LEVEL\,
+ V.BORR_BAL\,
+ V.EFFECTIVE_MONTH
+ FROM VIEW_RPT_BASE_INFO V
+ WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
+ AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
+ AND V.MODEL_CODE = '#MODEL_CODE'
+ AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
+ ) T GROUP BY T.ORIGINAL_LEVEL\, T.ORDER_NUM
+)\,
+B AS (
+ SELECT
+ CAST(SUM(CUST_CNT) AS DECIMAL) AS TOTAL_CUST_CNT
+ \,CAST(SUM(BORR_BAL) AS DECIMAL) AS TOTAL_BORR_BAL
+ \,CAST(SUM(CURR_INCT_CNT) AS DECIMAL) AS TOTAL_CURR_INCT_CNT
+ \,CAST(SUM(DEF_CUST_CNT) AS DECIMAL) AS TOTAL_DEF_CUST_CNT
+ FROM A
+)
+SELECT
+ A.FINAL_LEVEL\,
+ A.CUST_CNT\,
+ ROUND(CASE WHEN A.CUST_CNT = 0 THEN 0 ELSE A.CUST_CNT / B.TOTAL_CUST_CNT END\,4) AS CUST_RATIO\,
+ A.BORR_BAL\,
+ ROUND(CASE WHEN A.BORR_BAL = 0 THEN 0 ELSE A.BORR_BAL / B.TOTAL_BORR_BAL END\,4) AS BORR_BAL_RATIO\,
+ A.CURR_INCT_CNT\,
+ ROUND(CASE WHEN A.CURR_INCT_CNT = 0 THEN 0 ELSE A.CURR_INCT_CNT / B.TOTAL_CURR_INCT_CNT END\,4) AS CURR_INCT_RATIO\,
+ A.DEF_CUST_CNT\,
+ ROUND(CASE WHEN A.DEF_CUST_CNT = 0 THEN 0 ELSE A.DEF_CUST_CNT / B.TOTAL_DEF_CUST_CNT END\,4) AS DEF_CUST_RATIO
+FROM A LEFT JOIN B ON 1 = 1
+ORDER BY A.ORDER_NUM",,,,,,
+"13","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","DM DBMS","WITH A AS (
+ SELECT
T.MODEL_CODE\,
T.MODEL_NAME\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
+ SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
FROM (
- SELECT
+ SELECT
V.FINAL_LEVEL\,
V.MODEL_CODE\,
V.MODEL_NAME
- FROM VIEW_RPT_BASE_INFO V
+ FROM VIEW_RPT_BASE_INFO V
WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
) T GROUP BY T.MODEL_CODE\, T.MODEL_NAME
)\,
B AS (
- SELECT
+ SELECT
COUNT(CUST_NO) AS TOTAL_CUST_CNT
- FROM VIEW_RPT_BASE_INFO V
+ FROM VIEW_RPT_BASE_INFO V
WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
+ AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
)
-SELECT
+SELECT
A.MODEL_NAME\,
+ A.AAA_PLUS_CNT\,
+ CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\,
A.AAA_CNT\,
CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\,
+ A.AA_PLUS_CNT\,
+ CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\,
A.AA_CNT\,
CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\,
+ A.AA_MINUS_CNT\,
+ CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\,
A.A_PLUS_CNT\,
CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\,
A.A_CNT\,
@@ -202,14 +251,8 @@ SELECT
CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\,
A.BBB_CNT\,
CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\,
- A.BB_PLUS_CNT\,
- CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END AS BB_PLUS_RATIO\,
A.BB_CNT\,
CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\,
- A.BB_MINUS_CNT\,
- CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END AS BB_MINUS_RATIO\,
- A.B_PLUS_CNT\,
- CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END AS B_PLUS_RATIO\,
A.B_CNT\,
CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\,
A.CCC_CNT\,
@@ -222,48 +265,54 @@ SELECT
CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO
FROM A LEFT JOIN B ON 1=1
ORDER BY A.MODEL_CODE",,,,,,
-"3","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","MYSQL","WITH A AS (
- SELECT
+"14","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","DM DBMS","WITH A AS (
+ SELECT
T.MANAGER_ORG_CODE\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
+ SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
FROM (
- SELECT
+ SELECT
V.FINAL_LEVEL\,
V.MANAGER_ORG_CODE
- FROM VIEW_RPT_BASE_INFO V
+ FROM VIEW_RPT_BASE_INFO V
WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND V.MODEL_CODE = '#MODEL_CODE'
+ AND V.MODEL_CODE = '#MODEL_CODE'
) T GROUP BY T.MANAGER_ORG_CODE
)\,
B AS (
- SELECT
- COUNT(CUST_NO) AS TOTAL_CUST_CNT
- FROM VIEW_RPT_BASE_INFO V
+ SELECT
+ CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT
+ FROM VIEW_RPT_BASE_INFO V
WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND V.MODEL_CODE = '#MODEL_CODE'
+ AND V.MODEL_CODE = '#MODEL_CODE'
)
-SELECT
- O.FD_NAME AS MANAGER_ORG_NAME\,
+SELECT
+ NVL(O.FD_NAME\, A.MANAGER_ORG_CODE) AS MANAGER_ORG_NAME\,
+ A.AAA_PLUS_CNT\,
+ CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\,
A.AAA_CNT\,
CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\,
+ A.AA_PLUS_CNT\,
+ CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\,
A.AA_CNT\,
CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\,
+ A.AA_MINUS_CNT\,
+ CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\,
A.A_PLUS_CNT\,
CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\,
A.A_CNT\,
@@ -272,14 +321,8 @@ SELECT
CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\,
A.BBB_CNT\,
CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\,
- A.BB_PLUS_CNT\,
- CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END AS BB_PLUS_RATIO\,
A.BB_CNT\,
CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\,
- A.BB_MINUS_CNT\,
- CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END AS BB_MINUS_RATIO\,
- A.B_PLUS_CNT\,
- CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END AS B_PLUS_RATIO\,
A.B_CNT\,
CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\,
A.CCC_CNT\,
@@ -293,50 +336,56 @@ SELECT
FROM A LEFT JOIN B ON 1=1
LEFT JOIN FR_AA_ORG O ON O.FD_CODE = A.MANAGER_ORG_CODE
ORDER BY A.MANAGER_ORG_CODE",,,,,,
-"4","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","MYSQL","WITH A AS (
- SELECT
+"15","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","DM DBMS","WITH A AS (
+ SELECT
T.INDUSTRY_CODE\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
+ SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
FROM (
- SELECT
+ SELECT
V.FINAL_LEVEL\,
V.INDUSTRY_CODE
- FROM VIEW_RPT_BASE_INFO V
+ FROM VIEW_RPT_BASE_INFO V
WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
- AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND B.MODEL_CODE='#MODEL_CODE'
+ AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
+ AND B.MODEL_CODE='#MODEL_CODE'
AND B.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
) T GROUP BY T.INDUSTRY_CODE
)\,
B AS (
- SELECT
- COUNT(CUST_NO) AS TOTAL_CUST_CNT
- FROM VIEW_RPT_BASE_INFO V
+ SELECT
+ CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT
+ FROM VIEW_RPT_BASE_INFO V
WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND B.MODEL_CODE='#MODEL_CODE'
+ AND B.MODEL_CODE='#MODEL_CODE'
AND B.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)
-SELECT
+SELECT
I.INDUSTRY_NAME\,
+ A.AAA_PLUS_CNT\,
+ CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\,
A.AAA_CNT\,
CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\,
+ A.AA_PLUS_CNT\,
+ CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\,
A.AA_CNT\,
CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\,
+ A.AA_MINUS_CNT\,
+ CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\,
A.A_PLUS_CNT\,
CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\,
A.A_CNT\,
@@ -345,14 +394,8 @@ SELECT
CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\,
A.BBB_CNT\,
CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\,
- A.BB_PLUS_CNT\,
- CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END AS BB_PLUS_RATIO\,
A.BB_CNT\,
CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\,
- A.BB_MINUS_CNT\,
- CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END AS BB_MINUS_RATIO\,
- A.B_PLUS_CNT\,
- CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END AS B_PLUS_RATIO\,
A.B_CNT\,
CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\,
A.CCC_CNT\,
@@ -451,134 +494,134 @@ LEFT JOIN (
21 AS ORDER_NUM
) I ON I.INDUSTRY_CODE = A.INDUSTRY_CODE
ORDER BY I.ORDER_NUM",,,,,,
-"5","rptRatingNumberMigrate","客户评级迁移报表(客户数)","MYSQL","WITH CURR AS (
- SELECT
+"16","rptRatingNumberMigrate","客户评级迁移报表(客户数)","DM DBMS","WITH CURR AS (
+ SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
R.ORDER_NUM\,
R.EFFECTIVE_MONTH\,
- R.RATING_STATUS
+ R.RATING_STATUS
FROM
VIEW_RPT_BASE_INFO R
WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME
- AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL )
+ AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL )
AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-LAST AS (
- SELECT
+LAST_R AS (
+ SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
R.ORDER_NUM\,
R.EFFECTIVE_MONTH\,
R.RATING_STATUS
FROM VIEW_RPT_BASE_INFO R
- WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL)
- AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL)
+ WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL)
+ AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-NEW AS (
+NEW_R AS (
SELECT
'新增客户' AS FINAL_LEVEL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\,
0 AS NOT_RATING_CNT\,0 AS UP_CNT\,0 AS DOWN_CNT\,0 AS UP_RATIO\,
- 0 AS DOWN_RATIO\,0 AS CHG_EXPONENT
- FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO )
+ 0 AS DOWN_RATIO\,0 AS CHG_EXPONENT
+ FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO )
)\,
NR AS (
SELECT
- LAST.FINAL_LEVEL\,
- COUNT( 1 ) AS NOT_RATING_CNT
- FROM LAST
- WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO )
- GROUP BY LAST.FINAL_LEVEL
+ LAST_R.FINAL_LEVEL\,
+ CAST(COUNT( 1 ) AS DECIMAL) AS NOT_RATING_CNT
+ FROM LAST_R
+ WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO )
+ GROUP BY LAST_R.FINAL_LEVEL
)\,
CHG AS (
SELECT
- SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN 1 ELSE 0 END ) AS CHG_CNT
- FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO
-)
-
-
-
+ CAST(SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN 1 ELSE 0 END ) AS DECIMAL) AS CHG_CNT
+ FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO
+)
+
+
+
SELECT
- *
+ *
FROM
(
SELECT
S.SCALE_LEVEL AS FINAL_LEVEL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\,
IFNULL( NR.NOT_RATING_CNT\, 0 ) AS NOT_RATING_CNT\,
- SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\,
- SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\,
- CASE WHEN CHG.CHG_CNT = 0 THEN 0
- ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\,
+ SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\,
+ CASE WHEN CHG.CHG_CNT = 0 THEN 0
+ ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
END AS UP_RATIO\,
- CASE WHEN CHG.CHG_CNT = 0 THEN 0
- ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ CASE WHEN CHG.CHG_CNT = 0 THEN 0
+ ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
END AS DOWN_RATIO\,(
CASE
-
+
WHEN CHG.CHG_CNT = 0 THEN
- 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
- END
+ 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ END
)-(
CASE
-
+
WHEN CHG.CHG_CNT = 0 THEN
- 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
- END
- ) AS CHG_EXPONENT
+ 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ END
+ ) AS CHG_EXPONENT
FROM
NS_CFG_MAIN_SCALE S
- LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL
- LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO
+ LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL
+ LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO
LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL
- LEFT JOIN CHG ON 1 = 1
+ LEFT JOIN CHG ON 1 = 1
GROUP BY
S.SCALE_LEVEL\,
S.ORDER_NUM\,
NR.NOT_RATING_CNT\,
- CHG.CHG_CNT
+ CHG.CHG_CNT
ORDER BY
- S.ORDER_NUM
+ S.ORDER_NUM
) A UNION
SELECT
- *
+ *
FROM
- NEW",,,,,,
-"6","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","MYSQL","WITH CURR AS (
- SELECT
+ NEW_R",,,,,,
+"17","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","DM DBMS","WITH CURR AS (
+ SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
R.ORDER_NUM\,
@@ -588,13 +631,13 @@ FROM
FROM
VIEW_RPT_BASE_INFO R
WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME
- AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL )
+ AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL )
AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-LAST AS (
- SELECT
+LAST_R AS (
+ SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
R.ORDER_NUM\,
@@ -602,82 +645,82 @@ LAST AS (
R.RATING_STATUS\,
R.BORR_BAL
FROM VIEW_RPT_BASE_INFO R
- WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL)
- AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL)
+ WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL)
+ AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-NEW AS (
+NEW_R AS (
SELECT
'新增客户' AS FINAL_LEVEL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\,
- 0 AS NOT_RATING_BAL\,0 AS UP_BAL\,0 AS DOWN_BAL\,0 AS UP_RATIO\,0 AS DOWN_RATIO\,0 AS CHG_EXPONENT
- FROM CURR
- WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO )
+ 0 AS NOT_RATING_BAL\,0 AS UP_BAL\,0 AS DOWN_BAL\,0 AS UP_RATIO\,0 AS DOWN_RATIO\,0 AS CHG_EXPONENT
+ FROM CURR
+ WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO )
)\,
NR AS (
SELECT
- LAST.FINAL_LEVEL\,SUM(IFNULL( LAST.BORR_BAL\, 0 )) AS NOT_RATING_BAL
- FROM LAST
- WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO )
- GROUP BY LAST.FINAL_LEVEL
+ LAST_R.FINAL_LEVEL\,SUM(IFNULL( LAST_R.BORR_BAL\, 0 )) AS NOT_RATING_BAL
+ FROM LAST_R
+ WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO )
+ GROUP BY LAST_R.FINAL_LEVEL
)\,
CHG AS (
SELECT
- SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL
- FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO
-)
+ SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL
+ FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO
+)
SELECT * FROM (
SELECT
S.SCALE_LEVEL AS FINAL_LEVEL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\,
NR.NOT_RATING_BAL\,
- SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\,
- SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\,
- CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
+ SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\,
+ SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\,
+ CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
END AS UP_RATIO\,
- CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
+ CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
END AS DOWN_RATIO\,(
- CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
- END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT
+ CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
+ END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT
FROM NS_CFG_MAIN_SCALE S
- LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL
- LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO
+ LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL
+ LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO
LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL
- LEFT JOIN CHG ON 1 = 1
- GROUP BY S.SCALE_LEVEL\,S.ORDER_NUM\,NOT_RATING_BAL\,CHG.CHG_BAL
- ORDER BY S.ORDER_NUM ) A
+ LEFT JOIN CHG ON 1 = 1
+ GROUP BY S.SCALE_LEVEL\,S.ORDER_NUM\,NOT_RATING_BAL\,CHG.CHG_BAL
+ ORDER BY S.ORDER_NUM ) A
UNION
-SELECT * FROM NEW",,,,,,
-"7","rptModelMonitorDiff","模型区分能力监控报表","MYSQL","WITH A AS (
+SELECT * FROM NEW_R",,,,,,
+"18","rptModelMonitorDiff","模型区分能力监控报表","DM DBMS","WITH A AS (
SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION
SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION
SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION
@@ -687,7 +730,7 @@ SELECT * FROM NEW",,,,,,
SELECT 60 AS DOWN\, 70 AS UP\, 7 AS SCORE_AREA UNION
SELECT 70 AS DOWN\, 80 AS UP\, 8 AS SCORE_AREA UNION
SELECT 80 AS DOWN\, 90 AS UP\, 9 AS SCORE_AREA UNION
- SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA
+ SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA
)\,
B AS (
SELECT
@@ -695,22 +738,22 @@ B AS (
A.SCORE_AREA\,
COUNT( V.FINAL_LEVEL ) AS CUST_CNT\,
SUM( CASE WHEN V.FINAL_LEVEL <> 'D' THEN 1 ELSE 0 END ) AS GOOD_CNT\,
- SUM( CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS BAD_CNT
- FROM VIEW_RPT_BASE_INFO V\, A
- WHERE V.MODEL_SCORE > A.DOWN
- AND V.MODEL_SCORE <= A.UP
- AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL -#YEAR_PERIOD YEAR )\, '%Y%m' )
- AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' )
+ SUM( CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS BAD_CNT
+ FROM VIEW_RPT_BASE_INFO V\, A
+ WHERE V.MODEL_SCORE > A.DOWN
+ AND V.MODEL_SCORE <= A.UP
+ AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' )
+ AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' )
AND V.MODEL_CODE='#MODEL_CODE'
- GROUP BY V.EFFECTIVE_Q\,A.SCORE_AREA
+ GROUP BY V.EFFECTIVE_Q\,A.SCORE_AREA
)\,
C AS (
SELECT DISTINCT
B.EFFECTIVE_Q\,
B.SCORE_AREA\,
- SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_CUST_CNT\,
- SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_GOOD_CNT\,
- SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_BAD_CNT
+ CAST(SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q )AS DECIMAL) AS TOT_CUST_CNT\,
+ CAST(SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_GOOD_CNT\,
+ CAST(SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_BAD_CNT
FROM B
)\,
D AS (
@@ -718,104 +761,104 @@ D AS (
T1.EFFECTIVE_Q\,
T1.SCORE_AREA\,
SUM( T2.GOOD_CNT ) AS GOOD_CNT\,
- SUM( T2.BAD_CNT ) AS BAD_CNT
+ SUM( T2.BAD_CNT ) AS BAD_CNT
FROM(
SELECT
B.EFFECTIVE_Q\,
B.SCORE_AREA\,
SUM( B.GOOD_CNT ) AS GOOD_CNT\,
- SUM( B.BAD_CNT ) AS BAD_CNT
- FROM B
- GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
+ SUM( B.BAD_CNT ) AS BAD_CNT
+ FROM B
+ GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
) T1 INNER JOIN (
SELECT
B.EFFECTIVE_Q\,
B.SCORE_AREA\,
SUM( B.GOOD_CNT ) AS GOOD_CNT\,
- SUM( B.BAD_CNT ) AS BAD_CNT
- FROM B
- GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
- ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q
- AND T1.SCORE_AREA >= T2.SCORE_AREA
- GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA
+ SUM( B.BAD_CNT ) AS BAD_CNT
+ FROM B
+ GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
+ ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q
+ AND T1.SCORE_AREA >= T2.SCORE_AREA
+ GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA
)\,
E AS (
SELECT
T1.EFFECTIVE_Q\,
T1.SCORE_AREA\,
SUM( T2.CUST_CNT ) AS CUST_CNT\,
- SUM( T2.BAD_CNT ) AS BAD_CNT
+ SUM( T2.BAD_CNT ) AS BAD_CNT
FROM(
SELECT
B.EFFECTIVE_Q\,
B.SCORE_AREA\,
SUM( B.CUST_CNT ) AS CUST_CNT\,
- SUM( B.BAD_CNT ) AS BAD_CNT
- FROM B
- GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
+ SUM( B.BAD_CNT ) AS BAD_CNT
+ FROM B
+ GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
) T1 INNER JOIN (
SELECT
B.EFFECTIVE_Q\,
B.SCORE_AREA\,
SUM( B.CUST_CNT ) AS CUST_CNT\,
- SUM( B.BAD_CNT ) AS BAD_CNT
- FROM B
- GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
- ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q
- AND T1.SCORE_AREA >= T2.SCORE_AREA
- GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA
+ SUM( B.BAD_CNT ) AS BAD_CNT
+ FROM B
+ GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA
+ ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q
+ AND T1.SCORE_AREA >= T2.SCORE_AREA
+ GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA
)\,
KS AS (
SELECT
T.EFFECTIVE_Q\,
- MAX( T.DIFF ) AS KS
+ MAX( T.DIFF ) AS KS
FROM(
SELECT
D.EFFECTIVE_Q\,
D.SCORE_AREA\,
- D.GOOD_CNT / C.TOT_GOOD_CNT AS GOOD_RATIO\,
- D.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\,
- ABS( D.GOOD_CNT / C.TOT_GOOD_CNT - D.BAD_CNT / C.TOT_BAD_CNT ) AS DIFF
+ CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END AS GOOD_RATIO\,
+ CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\,
+ ABS( (CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END) - (CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END) ) AS DIFF
FROM D
- LEFT JOIN C ON C.EFFECTIVE_Q = D.EFFECTIVE_Q
- AND C.SCORE_AREA = D.SCORE_AREA
- ) T
- GROUP BY T.EFFECTIVE_Q
+ LEFT JOIN C ON C.EFFECTIVE_Q = D.EFFECTIVE_Q
+ AND C.SCORE_AREA = D.SCORE_AREA
+ ) T
+ GROUP BY T.EFFECTIVE_Q
)\,
AR AS (
SELECT
T.EFFECTIVE_Q\,
- ROUND( SUM( T.DIFF )/( T.NORMAL_RATIO / 2 )\, 4 ) AS AR
+ ROUND( SUM( T.DIFF )/( T.NORMAL_RATIO / 2 )\, 4 ) AS AR
FROM (
SELECT
E.EFFECTIVE_Q\,
E.SCORE_AREA\,
- E.CUST_CNT / C.TOT_CUST_CNT AS CUST_RATIO\,
- E.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\,
- (E.BAD_CNT/C.TOT_BAD_CNT-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\,
- (CC.TOT_CUST_CNT-CC.TOT_BAD_CNT)/CC.TOT_CUST_CNT AS NORMAL_RATIO
- FROM E LEFT JOIN C ON C.EFFECTIVE_Q = E.EFFECTIVE_Q
+ CASE WHEN C.TOT_CUST_CNT=0 THEN 0 ELSE E.CUST_CNT / C.TOT_CUST_CNT END AS CUST_RATIO\,
+ CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\,
+ ((CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT/C.TOT_BAD_CNT END)-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\,
+ (CC.TOT_CUST_CNT-CC.TOT_BAD_CNT)/CC.TOT_CUST_CNT AS NORMAL_RATIO
+ FROM E LEFT JOIN C ON C.EFFECTIVE_Q = E.EFFECTIVE_Q
AND C.SCORE_AREA = E.SCORE_AREA
- LEFT JOIN ( SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT FROM C ) CC
- ON CC.EFFECTIVE_Q = E.EFFECTIVE_Q
- ) T GROUP BY T.EFFECTIVE_Q\, T.NORMAL_RATIO
-)
+ LEFT JOIN ( SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT FROM C ) CC
+ ON CC.EFFECTIVE_Q = E.EFFECTIVE_Q
+ ) T GROUP BY T.EFFECTIVE_Q\, T.NORMAL_RATIO
+)
SELECT
KS.EFFECTIVE_Q\,
KS.KS\,
AR.AR\,
- CASE WHEN AR.AR >= 0.4 AND KS.KS >= 0.4 THEN '低度'
- WHEN AR.AR >= 0.3 AND AR.AR < 0.4 AND KS.KS < 0.4 THEN '中度'
- WHEN AR.AR < 0.3 OR KS.KS < 0.3 THEN '高度'
+ CASE WHEN AR.AR >= 0.4 AND KS.KS >= 0.4 THEN '低度'
+ WHEN AR.AR >= 0.3 AND AR.AR < 0.4 AND KS.KS < 0.4 THEN '中度'
+ WHEN AR.AR < 0.3 OR KS.KS < 0.3 THEN '高度'
ELSE '低度' END AS RISK_LEVEL\,
CC.TOT_NORMAL_CNT\,
CC.TOT_BAD_CNT\,
- CC.TOT_CUST_CNT
+ CC.TOT_CUST_CNT
FROM KS INNER JOIN AR ON AR.EFFECTIVE_Q = KS.EFFECTIVE_Q
-LEFT JOIN (SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT\, C.TOT_CUST_CNT - C.TOT_BAD_CNT AS TOT_NORMAL_CNT FROM C ) CC
- ON CC.EFFECTIVE_Q = KS.EFFECTIVE_Q
+LEFT JOIN (SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT\, C.TOT_CUST_CNT - C.TOT_BAD_CNT AS TOT_NORMAL_CNT FROM C ) CC
+ ON CC.EFFECTIVE_Q = KS.EFFECTIVE_Q
ORDER BY KS.EFFECTIVE_Q",,,,,,
-"8","rptModelMonitorStable","模型稳定性监控报表","MYSQL","WITH A AS (
+"19","rptModelMonitorStable","模型稳定性监控报表","DM DBMS","WITH A AS (
SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION
SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION
SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION
@@ -825,55 +868,55 @@ ORDER BY KS.EFFECTIVE_Q",,,,,,
SELECT 60 AS DOWN\, 70 AS UP\, 7 AS SCORE_AREA UNION
SELECT 70 AS DOWN\, 80 AS UP\, 8 AS SCORE_AREA UNION
SELECT 80 AS DOWN\, 90 AS UP\, 9 AS SCORE_AREA UNION
- SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA
+ SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA
)\,
B AS (
SELECT
V.EFFECTIVE_Q\,
A.SCORE_AREA\,
- V.CUST_NO
- FROM VIEW_RPT_BASE_INFO V\,A
- WHERE V.MODEL_SCORE > A.DOWN
- AND V.MODEL_SCORE <= A.UP
- AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' )
- AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' )
+ V.CUST_NO
+ FROM VIEW_RPT_BASE_INFO V\,A
+ WHERE V.MODEL_SCORE > A.DOWN
+ AND V.MODEL_SCORE <= A.UP
+ AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' )
+ AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' )
AND V.MODEL_CODE='#MODEL_CODE'
)\,
B1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM B GROUP BY EFFECTIVE_Q\, SCORE_AREA )\,
-B2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\,
+B2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\,
B3 AS (
SELECT
B1.EFFECTIVE_Q\,
B1.SCORE_AREA\,
- B1.CUST_CNT / B2.TOT_CUST_CNT AS CURR_RATIO
- FROM B1 LEFT JOIN B2 ON B2.EFFECTIVE_Q = B1.EFFECTIVE_Q
- ORDER BY B1.EFFECTIVE_Q\, B1.SCORE_AREA
+ B1.CUST_CNT / B2.TOT_CUST_CNT AS CURR_RATIO
+ FROM B1 LEFT JOIN B2 ON B2.EFFECTIVE_Q = B1.EFFECTIVE_Q
+ ORDER BY B1.EFFECTIVE_Q\, B1.SCORE_AREA
)\,
C AS (
SELECT
V.EFFECTIVE_Q\,
A.SCORE_AREA\,
- V.CUST_NO
- FROM VIEW_RPT_BASE_INFO V\,A
- WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP
- AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' )
- AND DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' )
+ V.CUST_NO
+ FROM VIEW_RPT_BASE_INFO V\,A
+ WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP
+ AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' )
+ AND DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' )
AND V.MODEL_CODE='#MODEL_CODE'
)\,
C1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM C GROUP BY EFFECTIVE_Q\, SCORE_AREA )\,
-C2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\,
+C2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\,
C3 AS (
SELECT
C1.EFFECTIVE_Q\,
C1.SCORE_AREA\,
- C1.CUST_CNT / C2.TOT_CUST_CNT AS LAST_RATIO
- FROM C1 LEFT JOIN C2 ON C2.EFFECTIVE_Q = C1.EFFECTIVE_Q
-)
+ C1.CUST_CNT / C2.TOT_CUST_CNT AS LAST_RATIO
+ FROM C1 LEFT JOIN C2 ON C2.EFFECTIVE_Q = C1.EFFECTIVE_Q
+)
SELECT
EFFECTIVE_Q\,
ROUND(PSI\,4) AS PSI\,
- CASE WHEN PSI <= 0.1 THEN '低度' WHEN PSI > 0.1 AND PSI <= 0.25 THEN '中度'
- ELSE '高度' END AS RISK_LEVEL
+ CASE WHEN PSI <= 0.1 THEN '低度' WHEN PSI > 0.1 AND PSI <= 0.25 THEN '中度'
+ ELSE '高度' END AS RISK_LEVEL
FROM (
SELECT
EFFECTIVE_Q\,
@@ -882,26 +925,98 @@ FROM (
SELECT
B3.EFFECTIVE_Q\,
B3.SCORE_AREA\,
- ROUND(( B3.CURR_RATIO - C3.LAST_RATIO )*LN( B3.CURR_RATIO / C3.LAST_RATIO )\, 4 ) AS PSI
- FROM B3 LEFT JOIN C3 ON RIGHT ( C3.EFFECTIVE_Q\, 1 )= RIGHT ( B3.EFFECTIVE_Q\, 1 )
- AND C3.SCORE_AREA = B3.SCORE_AREA
- ) T GROUP BY T.EFFECTIVE_Q
+ ROUND(( B3.CURR_RATIO - C3.LAST_RATIO )*LN( B3.CURR_RATIO / C3.LAST_RATIO )\, 4 ) AS PSI
+ FROM B3 LEFT JOIN C3 ON RIGHT ( C3.EFFECTIVE_Q\, 1 )= RIGHT ( B3.EFFECTIVE_Q\, 1 )
+ AND C3.SCORE_AREA = B3.SCORE_AREA
+ ) T GROUP BY T.EFFECTIVE_Q
) TT ORDER BY TT.EFFECTIVE_Q",,,,,,
-"9","rptRatingOverturn","客户评级推翻情况报表","MYSQL","SELECT
+"2","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","MYSQL","WITH A AS (
+ SELECT
+ T.MODEL_CODE\,
+ T.MODEL_NAME\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
+ FROM (
+ SELECT
+ V.FINAL_LEVEL\,
+ V.MODEL_CODE\,
+ V.MODEL_NAME
+ FROM VIEW_RPT_BASE_INFO V
+ WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
+ AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
+ AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
+ ) T GROUP BY T.MODEL_CODE\, T.MODEL_NAME
+)\,
+B AS (
+ SELECT
+ COUNT(CUST_NO) AS TOTAL_CUST_CNT
+ FROM VIEW_RPT_BASE_INFO V
+ WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
+ AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
+ AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
+)
+SELECT
+ A.MODEL_NAME\,
+ A.AAA_PLUS_CNT\,
+ CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\,
+ A.AAA_CNT\,
+ CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\,
+ A.AA_PLUS_CNT\,
+ CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\,
+ A.AA_CNT\,
+ CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\,
+ A.AA_MINUS_CNT\,
+ CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\,
+ A.A_PLUS_CNT\,
+ CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\,
+ A.A_CNT\,
+ CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END AS A_RATIO\,
+ A.A_MINUS_CNT\,
+ CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\,
+ A.BBB_CNT\,
+ CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\,
+ A.BB_CNT\,
+ CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\,
+ A.B_CNT\,
+ CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\,
+ A.CCC_CNT\,
+ CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END AS CCC_RATIO\,
+ A.CC_CNT\,
+ CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END AS CC_RATIO\,
+ A.C_CNT\,
+ CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END AS C_RATIO\,
+ A.D_CNT\,
+ CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO
+FROM A LEFT JOIN B ON 1=1
+ORDER BY A.MODEL_CODE",,,,,,
+"20","rptRatingOverturn","客户评级推翻情况报表","DM DBMS","SELECT
T.EFFECTIVE_MONTH\,
T.CUST_CNT\,
T.OVERTURN_CNT\,
- CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END AS OVERTURN_RATIO\,
- CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END AS UP_OVERTURN_RATIO\,
- CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END AS DOWN_OVERTURN_RATIO\,
- CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END AS ONE_LVL_RATIO\,
- CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END AS TWO_LVL_RATIO\,
- CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END AS THREE_LVL_RATIO\,
- CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END AS THREE_MORE_LVL_RATIO
+ ROUND(CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END\,4) AS OVERTURN_RATIO\,
+ ROUND(CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END\,4) AS UP_OVERTURN_RATIO\,
+ ROUND(CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END\,4) AS DOWN_OVERTURN_RATIO\,
+ ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END\,4) AS ONE_LVL_RATIO\,
+ ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END\,4) AS TWO_LVL_RATIO\,
+ ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_LVL_RATIO\,
+ ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_MORE_LVL_RATIO
FROM (
- SELECT
+ SELECT
V.EFFECTIVE_MONTH\,
- COUNT(V.CUST_NO) AS CUST_CNT\,
+ CAST(COUNT(V.CUST_NO) AS DECIMAL) AS CUST_CNT\,
SUM(CASE WHEN V.ORIGINAL_LEVEL <> V.INIT_LEVEL THEN 1 ELSE 0 END) AS OVERTURN_CNT\,
SUM(CASE WHEN V.ORDER_NUM > V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS UP_OVERTURN_CNT\,
SUM(CASE WHEN V.ORDER_NUM < V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS DOWN_OVERTURN_CNT\,
@@ -916,58 +1031,15 @@ FROM (
AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
GROUP BY V.EFFECTIVE_MONTH
) T ORDER BY T.EFFECTIVE_MONTH",,,,,,
-"12","rptRatingDistribution","客户评级分布报表","DM DBMS","WITH A AS (
- SELECT
- T.ORIGINAL_LEVEL AS FINAL_LEVEL
- \,T.ORDER_NUM
- \,COUNT(1) AS CUST_CNT
- \,SUM(IFNULL(T.BORR_BAL\,0)) AS BORR_BAL
- \,SUM(CASE WHEN T.EFFECTIVE_MONTH = CAST( DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) THEN 1 ELSE 0 END) AS CURR_INCT_CNT
- \,SUM(CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END) AS DEF_CUST_CNT
- FROM (
- SELECT
- V.CUST_NO\,
- V.ORIGINAL_LEVEL\,
- V.ORDER_NUM\,
- V.FINAL_LEVEL\,
- V.BORR_BAL\,
- V.EFFECTIVE_MONTH
- FROM VIEW_RPT_BASE_INFO V
- WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
- AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND V.MODEL_CODE = '#MODEL_CODE'
- AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
- ) T GROUP BY T.ORIGINAL_LEVEL\, T.ORDER_NUM
-)\,
-B AS (
- SELECT
- CAST(SUM(CUST_CNT) AS DECIMAL) AS TOTAL_CUST_CNT
- \,CAST(SUM(BORR_BAL) AS DECIMAL) AS TOTAL_BORR_BAL
- \,CAST(SUM(CURR_INCT_CNT) AS DECIMAL) AS TOTAL_CURR_INCT_CNT
- \,CAST(SUM(DEF_CUST_CNT) AS DECIMAL) AS TOTAL_DEF_CUST_CNT
- FROM A
-)
-SELECT
- A.FINAL_LEVEL\,
- A.CUST_CNT\,
- ROUND(CASE WHEN A.CUST_CNT = 0 THEN 0 ELSE A.CUST_CNT / B.TOTAL_CUST_CNT END,4) AS CUST_RATIO\,
- A.BORR_BAL\,
- ROUND(CASE WHEN A.BORR_BAL = 0 THEN 0 ELSE A.BORR_BAL / B.TOTAL_BORR_BAL END,4) AS BORR_BAL_RATIO\,
- A.CURR_INCT_CNT\,
- ROUND(CASE WHEN A.CURR_INCT_CNT = 0 THEN 0 ELSE A.CURR_INCT_CNT / B.TOTAL_CURR_INCT_CNT END,4) AS CURR_INCT_RATIO\,
- A.DEF_CUST_CNT\,
- ROUND(CASE WHEN A.DEF_CUST_CNT = 0 THEN 0 ELSE A.DEF_CUST_CNT / B.TOTAL_DEF_CUST_CNT END,4) AS DEF_CUST_RATIO
-FROM A LEFT JOIN B ON 1 = 1
-ORDER BY A.ORDER_NUM",,,,,,
"21","rptRatingAdjust","客户评级特例调整情况报表","DM DBMS","SELECT
T.EFFECTIVE_MONTH\,
T.CUST_CNT\,
T.ADJ_CNT\,
- ROUND(CASE WHEN T.ADJ_CNT = 0 THEN 0 ELSE T.ADJ_CNT/T.CUST_CNT END,4) AS ADJ_RATIO\,
- ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END,4) AS ONE_LVL_RATIO\,
- ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END,4) AS TWO_LVL_RATIO\,
- ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END,4) AS THREE_LVL_RATIO\,
- ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END,4) AS THREE_MORE_LVL_RATIO
+ ROUND(CASE WHEN T.ADJ_CNT = 0 THEN 0 ELSE T.ADJ_CNT/T.CUST_CNT END\,4) AS ADJ_RATIO\,
+ ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END\,4) AS ONE_LVL_RATIO\,
+ ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END\,4) AS TWO_LVL_RATIO\,
+ ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_LVL_RATIO\,
+ ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_MORE_LVL_RATIO
FROM (
SELECT
V.EFFECTIVE_MONTH\,
@@ -1063,91 +1135,167 @@ SELECT
ELSE '高度' END AS RISK_LEVEL\,
C.NORMAL_CNT\,C.DEF_CNT\,C.CUST_CNT
FROM B LEFT JOIN C ON C.EFFECTIVE_Y = B.EFFECTIVE_Y",,,,,,
-"13","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","DM DBMS","WITH A AS (
- SELECT
- T.MODEL_CODE\,
- T.MODEL_NAME\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT
- FROM (
- SELECT
- V.FINAL_LEVEL\,
- V.MODEL_CODE\,
- V.MODEL_NAME
- FROM VIEW_RPT_BASE_INFO V
- WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
- AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
- ) T GROUP BY T.MODEL_CODE\, T.MODEL_NAME
-)\,
-B AS (
- SELECT
- CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT
- FROM VIEW_RPT_BASE_INFO V
- WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
- AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
- AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE'
-)
+"23","insertDefaultAutoData","插入自动违约认定基础数据","MYSQL","insert into P_IRS_DEFAULT_AUTO_DEBT
+select
+ uuid()
+ \,b.data_dt
+ \,b.DEBENTURE_NO
+ \,b.CUST_NO
+ \,b.CUST_CNA
+ \,c.CUST_TYPE_CD
+ \,b.PRD_CD
+ \,b.PRD_CD_DESC
+ \,b.BORR_START_DT
+ \,b.BORR_MATURE_DT
+ \,b.BORR_BAL
+ \,b.IN_OWEINT_BAL
+ \,b.OFF_OWEINT_BAL
+ \,b.PRIN_OVER_DAYS
+ \,b.BORR_OVERDUE_BAL
+ \,b.INT_OVER_DAYS
+ \,0
+ \,b.TEN_CLASS_CD
+ \,b.STOP_INT_FLAG
+ \,case when b.BUSI_STATUS_CD = '01' then '1' else '0' end as CLOSE_FLAG
+ \,b.CANCEL_FLAG
+ \,b.EXTEND_NUM
+ \,b.BOR_REPAY_CNT
+ \,0
+ \,case when b.OFF_OWEINT_BAL > 0 then '1' else '0' end as INTEREST_OUTTAB_FLAG
+ \,c.MGER_NO
+ \,c.MGER_CNA
+ \,c.MGER_ORG_NM
+ \,'IMPORT'
+ \,'SYSTEM'
+ \,NULL
+ \,'SYSTEM'
+ \,NULL
+ \,'_PRIMARY_'
+from irbs_loan_borr_info b
+left join irbs_cust_cp_info c
+ on b.CUST_NO = c.CUST_NO
+ and b.DATA_DT = c.DATA_DT
+where b.DATA_DT = '#DATA_DT'",,,,,,
+"24","insertDefaultAutoData","插入自动违约认定基础数据","DM DBMS","insert into P_IRS_DEFAULT_AUTO_DEBT
+select
+ SYS_GUID()
+ \,b.data_dt
+ \,b.DEBENTURE_NO
+ \,b.CUST_NO
+ \,b.CUST_CNA
+ \,c.CUST_TYPE_CD
+ \,b.PRD_CD
+ \,b.PRD_CD_DESC
+ \,b.BORR_START_DT
+ \,b.BORR_MATURE_DT
+ \,b.BORR_BAL
+ \,b.IN_OWEINT_BAL
+ \,b.OFF_OWEINT_BAL
+ \,b.PRIN_OVER_DAYS
+ \,b.BORR_OVERDUE_BAL
+ \,b.INT_OVER_DAYS
+ \,0
+ \,b.TEN_CLASS_CD
+ \,b.STOP_INT_FLAG
+ \,case when b.BUSI_STATUS_CD = '01' then '1' else '0' end as CLOSE_FLAG
+ \,b.CANCEL_FLAG
+ \,b.EXTEND_NUM
+ \,b.BOR_REPAY_CNT
+ \,0
+ \,case when b.OFF_OWEINT_BAL > 0 then '1' else '0' end as INTEREST_OUTTAB_FLAG
+ \,c.MGER_NO
+ \,c.MGER_CNA
+ \,c.MGER_ORG_NM
+ \,'IMPORT'
+ \,'SYSTEM'
+ \,NULL
+ \,'SYSTEM'
+ \,NULL
+ \,'_PRIMARY_'
+from irbs_loan_borr_info b
+left join irbs_cust_cp_info c
+ on b.CUST_NO = c.CUST_NO
+ and b.DATA_DT = c.DATA_DT
+where b.DATA_DT = '#DATA_DT'",,,,,,
+"25","insertRiskExposureAutoData","插入自动风险暴露分类基础数据","MYSQL","insert into P_IRS_RISK_EXPOSURE_DEBT
SELECT
- A.MODEL_NAME\,
- A.AAA_CNT\,
- ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\,
- A.AA_CNT\,
- ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\,
- A.A_PLUS_CNT\,
- ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\,
- A.A_CNT\,
- ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\,
- A.A_MINUS_CNT\,
- ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\,
- A.BBB_CNT\,
- ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\,
- A.BB_PLUS_CNT\,
- ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\,
- A.BB_CNT\,
- ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\,
- A.BB_MINUS_CNT\,
- ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\,
- A.B_PLUS_CNT\,
- ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\,
- A.B_CNT\,
- ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\,
- A.CCC_CNT\,
- ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\,
- A.CC_CNT\,
- ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\,
- A.C_CNT\,
- ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\,
- A.D_CNT\,
- ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO
-FROM A LEFT JOIN B ON 1=1
-ORDER BY A.MODEL_CODE",,,,,,
-"14","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","DM DBMS","WITH A AS (
+ uuid()
+ \,b.DATA_DT
+ \,b.DEBENTURE_NO
+ \,b.CUST_NO
+ \,b.CUST_CNA
+ \,'CORP'
+ \,b.PRD_CD
+ \,b.PRD_CD_DESC
+ \,c.CORP_SIZE_CD
+ \,0
+ \,b.MAJOR_LOAN_LIST_FLAG
+ \,'09'
+ \,0
+ \,c.INDU_SORT_CD
+ \,0
+ \,'0'
+ \,'0'
+ \,c.MGER_NO
+ \,c.MGER_CNA
+ \,c.MGER_ORG_NM
+ \,'IMPORT'
+ \,'SYSTEM'
+ \,NULL
+ \,'SYSTEM'
+ \,NULL
+ \,'_PRIMARY_'
+FROM irbs_loan_borr_info b
+left join irbs_cust_cp_info c
+ on b.CUST_NO = c.CUST_NO
+ and b.DATA_DT = c.DATA_DT
+where b.DATA_DT = '#DATA_DT'",,,,,,
+"26","insertRiskExposureAutoData","插入自动风险暴露分类基础数据","DM DBMS","insert into P_IRS_RISK_EXPOSURE_DEBT
+SELECT
+ sys_guid()
+ \,b.DATA_DT
+ \,b.DEBENTURE_NO
+ \,b.CUST_NO
+ \,b.CUST_CNA
+ \,'CORP'
+ \,b.PRD_CD
+ \,b.PRD_CD_DESC
+ \,c.CORP_SIZE_CD
+ \,0
+ \,b.MAJOR_LOAN_LIST_FLAG
+ \,'09'
+ \,0
+ \,c.INDU_SORT_CD
+ \,0
+ \,'0'
+ \,'0'
+ \,c.MGER_NO
+ \,c.MGER_CNA
+ \,c.MGER_ORG_NM
+ \,'IMPORT'
+ \,'SYSTEM'
+ \,NULL
+ \,'SYSTEM'
+ \,NULL
+ \,'_PRIMARY_'
+FROM irbs_loan_borr_info b
+left join irbs_cust_cp_info c
+ on b.CUST_NO = c.CUST_NO
+ and b.DATA_DT = c.DATA_DT
+where b.DATA_DT = '#DATA_DT'",,,,,,
+"3","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","MYSQL","WITH A AS (
SELECT
T.MANAGER_ORG_CODE\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
@@ -1165,60 +1313,60 @@ ORDER BY A.MODEL_CODE",,,,,,
)\,
B AS (
SELECT
- CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT
+ COUNT(CUST_NO) AS TOTAL_CUST_CNT
FROM VIEW_RPT_BASE_INFO V
WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME
AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL)
AND V.MODEL_CODE = '#MODEL_CODE'
)
SELECT
- NVL(O.FD_NAME, A.MANAGER_ORG_CODE) AS MANAGER_ORG_NAME\,
+ NULLIF(O.FD_NAME\,A.MANAGER_ORG_CODE) AS MANAGER_ORG_NAME\,
+ A.AAA_PLUS_CNT\,
+ CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\,
A.AAA_CNT\,
- ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\,
+ CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\,
+ A.AA_PLUS_CNT\,
+ CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\,
A.AA_CNT\,
- ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\,
+ CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\,
+ A.AA_MINUS_CNT\,
+ CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\,
A.A_PLUS_CNT\,
- ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\,
+ CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\,
A.A_CNT\,
- ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\,
+ CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END AS A_RATIO\,
A.A_MINUS_CNT\,
- ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\,
+ CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\,
A.BBB_CNT\,
- ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\,
- A.BB_PLUS_CNT\,
- ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\,
+ CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\,
A.BB_CNT\,
- ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\,
- A.BB_MINUS_CNT\,
- ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\,
- A.B_PLUS_CNT\,
- ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\,
+ CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\,
A.B_CNT\,
- ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\,
+ CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\,
A.CCC_CNT\,
- ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\,
+ CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END AS CCC_RATIO\,
A.CC_CNT\,
- ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\,
+ CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END AS CC_RATIO\,
A.C_CNT\,
- ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\,
+ CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END AS C_RATIO\,
A.D_CNT\,
- ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO
+ CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO
FROM A LEFT JOIN B ON 1=1
LEFT JOIN FR_AA_ORG O ON O.FD_CODE = A.MANAGER_ORG_CODE
ORDER BY A.MANAGER_ORG_CODE",,,,,,
-"15","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","DM DBMS","WITH A AS (
+"4","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","MYSQL","WITH A AS (
SELECT
T.INDUSTRY_CODE\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
@@ -1246,36 +1394,36 @@ B AS (
)
SELECT
I.INDUSTRY_NAME\,
+ A.AAA_PLUS_CNT\,
+ CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\,
A.AAA_CNT\,
- ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\,
+ CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\,
+ A.AA_PLUS_CNT\,
+ CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\,
A.AA_CNT\,
- ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\,
+ CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\,
+ A.AA_MINUS_CNT\,
+ CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\,
A.A_PLUS_CNT\,
- ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\,
+ CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\,
A.A_CNT\,
- ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\,
+ CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END AS A_RATIO\,
A.A_MINUS_CNT\,
- ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\,
+ CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\,
A.BBB_CNT\,
- ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\,
- A.BB_PLUS_CNT\,
- ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\,
+ CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\,
A.BB_CNT\,
- ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\,
- A.BB_MINUS_CNT\,
- ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\,
- A.B_PLUS_CNT\,
- ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\,
+ CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\,
A.B_CNT\,
- ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\,
+ CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\,
A.CCC_CNT\,
- ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\,
+ CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END AS CCC_RATIO\,
A.CC_CNT\,
- ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\,
+ CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END AS CC_RATIO\,
A.C_CNT\,
- ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\,
+ CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END AS C_RATIO\,
A.D_CNT\,
- ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO
+ CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO
FROM A LEFT JOIN B ON 1=1
LEFT JOIN (
SELECT
@@ -1364,7 +1512,7 @@ LEFT JOIN (
21 AS ORDER_NUM
) I ON I.INDUSTRY_CODE = A.INDUSTRY_CODE
ORDER BY I.ORDER_NUM",,,,,,
-"16","rptRatingNumberMigrate","客户评级迁移报表(客户数)","DM DBMS","WITH CURR AS (
+"5","rptRatingNumberMigrate","客户评级迁移报表(客户数)","MYSQL","WITH CURR AS (
SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
@@ -1374,12 +1522,12 @@ ORDER BY I.ORDER_NUM",,,,,,
FROM
VIEW_RPT_BASE_INFO R
WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME
- AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL )
+ AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL )
AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-LAST_R AS (
+LAST AS (
SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
@@ -1387,24 +1535,24 @@ LAST_R AS (
R.EFFECTIVE_MONTH\,
R.RATING_STATUS
FROM VIEW_RPT_BASE_INFO R
- WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL)
- AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL)
+ WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL)
+ AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-NEW_R AS (
+NEW AS (
SELECT
'新增客户' AS FINAL_LEVEL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
@@ -1412,20 +1560,20 @@ NEW_R AS (
SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\,
0 AS NOT_RATING_CNT\,0 AS UP_CNT\,0 AS DOWN_CNT\,0 AS UP_RATIO\,
0 AS DOWN_RATIO\,0 AS CHG_EXPONENT
- FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO )
+ FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO )
)\,
NR AS (
SELECT
- LAST_R.FINAL_LEVEL\,
- CAST(COUNT( 1 ) AS DECIMAL) AS NOT_RATING_CNT
- FROM LAST_R
- WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO )
- GROUP BY LAST_R.FINAL_LEVEL
+ LAST.FINAL_LEVEL\,
+ COUNT( 1 ) AS NOT_RATING_CNT
+ FROM LAST
+ WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO )
+ GROUP BY LAST.FINAL_LEVEL
)\,
CHG AS (
SELECT
- CAST(SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN 1 ELSE 0 END ) AS DECIMAL) AS CHG_CNT
- FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO
+ SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN 1 ELSE 0 END ) AS CHG_CNT
+ FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO
)
@@ -1436,46 +1584,46 @@ FROM
(
SELECT
S.SCALE_LEVEL AS FINAL_LEVEL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\,
IFNULL( NR.NOT_RATING_CNT\, 0 ) AS NOT_RATING_CNT\,
- SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\,
- SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\,
+ SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\,
+ SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\,
CASE WHEN CHG.CHG_CNT = 0 THEN 0
- ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
END AS UP_RATIO\,
CASE WHEN CHG.CHG_CNT = 0 THEN 0
- ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
END AS DOWN_RATIO\,(
CASE
WHEN CHG.CHG_CNT = 0 THEN
- 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
END
)-(
CASE
WHEN CHG.CHG_CNT = 0 THEN
- 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
+ 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT
END
) AS CHG_EXPONENT
FROM
NS_CFG_MAIN_SCALE S
- LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL
- LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO
+ LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL
+ LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO
LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL
LEFT JOIN CHG ON 1 = 1
GROUP BY
@@ -1489,8 +1637,8 @@ FROM
SELECT
*
FROM
- NEW_R",,,,,,
-"17","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","DM DBMS","WITH CURR AS (
+ NEW",,,,,,
+"6","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","MYSQL","WITH CURR AS (
SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
@@ -1501,12 +1649,12 @@ FROM
FROM
VIEW_RPT_BASE_INFO R
WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME
- AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL )
+ AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL )
AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-LAST_R AS (
+LAST AS (
SELECT
R.CUST_NO\,
R.FINAL_LEVEL\,
@@ -1515,24 +1663,24 @@ LAST_R AS (
R.RATING_STATUS\,
R.BORR_BAL
FROM VIEW_RPT_BASE_INFO R
- WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL)
- AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL)
+ WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL)
+ AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL)
AND R.MODEL_CODE='#MODEL_CODE'
AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE'
)\,
-NEW_R AS (
+NEW AS (
SELECT
'新增客户' AS FINAL_LEVEL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\,
SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\,
@@ -1540,57 +1688,57 @@ NEW_R AS (
SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\,
0 AS NOT_RATING_BAL\,0 AS UP_BAL\,0 AS DOWN_BAL\,0 AS UP_RATIO\,0 AS DOWN_RATIO\,0 AS CHG_EXPONENT
FROM CURR
- WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO )
+ WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO )
)\,
NR AS (
SELECT
- LAST_R.FINAL_LEVEL\,SUM(IFNULL( LAST_R.BORR_BAL\, 0 )) AS NOT_RATING_BAL
- FROM LAST_R
- WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO )
- GROUP BY LAST_R.FINAL_LEVEL
+ LAST.FINAL_LEVEL\,SUM(IFNULL( LAST.BORR_BAL\, 0 )) AS NOT_RATING_BAL
+ FROM LAST
+ WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO )
+ GROUP BY LAST.FINAL_LEVEL
)\,
CHG AS (
SELECT
- SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL
- FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO
+ SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL
+ FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO
)
SELECT * FROM (
SELECT
S.SCALE_LEVEL AS FINAL_LEVEL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\,
- SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\,
+ SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\,
NR.NOT_RATING_BAL\,
- SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\,
- SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\,
- CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
+ SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\,
+ SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\,
+ CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
END AS UP_RATIO\,
- CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
+ CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
END AS DOWN_RATIO\,(
- CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
- END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT
+ CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL
+ END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT
FROM NS_CFG_MAIN_SCALE S
- LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL
- LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO
+ LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL
+ LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO
LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL
LEFT JOIN CHG ON 1 = 1
GROUP BY S.SCALE_LEVEL\,S.ORDER_NUM\,NOT_RATING_BAL\,CHG.CHG_BAL
ORDER BY S.ORDER_NUM ) A
UNION
-SELECT * FROM NEW_R",,,,,,
-"18","rptModelMonitorDiff","模型区分能力监控报表","DM DBMS","WITH A AS (
+SELECT * FROM NEW",,,,,,
+"7","rptModelMonitorDiff","模型区分能力监控报表","MYSQL","WITH A AS (
SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION
SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION
SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION
@@ -1612,7 +1760,7 @@ B AS (
FROM VIEW_RPT_BASE_INFO V\, A
WHERE V.MODEL_SCORE > A.DOWN
AND V.MODEL_SCORE <= A.UP
- AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' )
+ AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL -#YEAR_PERIOD YEAR )\, '%Y%m' )
AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' )
AND V.MODEL_CODE='#MODEL_CODE'
GROUP BY V.EFFECTIVE_Q\,A.SCORE_AREA
@@ -1621,9 +1769,9 @@ C AS (
SELECT DISTINCT
B.EFFECTIVE_Q\,
B.SCORE_AREA\,
- CAST(SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q )AS DECIMAL) AS TOT_CUST_CNT\,
- CAST(SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_GOOD_CNT\,
- CAST(SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_BAD_CNT
+ SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_CUST_CNT\,
+ SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_GOOD_CNT\,
+ SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_BAD_CNT
FROM B
)\,
D AS (
@@ -1686,9 +1834,9 @@ KS AS (
SELECT
D.EFFECTIVE_Q\,
D.SCORE_AREA\,
- CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END AS GOOD_RATIO\,
- CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\,
- ABS( (CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END) - (CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END) ) AS DIFF
+ D.GOOD_CNT / C.TOT_GOOD_CNT AS GOOD_RATIO\,
+ D.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\,
+ ABS( D.GOOD_CNT / C.TOT_GOOD_CNT - D.BAD_CNT / C.TOT_BAD_CNT ) AS DIFF
FROM D
LEFT JOIN C ON C.EFFECTIVE_Q = D.EFFECTIVE_Q
AND C.SCORE_AREA = D.SCORE_AREA
@@ -1703,9 +1851,9 @@ AR AS (
SELECT
E.EFFECTIVE_Q\,
E.SCORE_AREA\,
- CASE WHEN C.TOT_CUST_CNT=0 THEN 0 ELSE E.CUST_CNT / C.TOT_CUST_CNT END AS CUST_RATIO\,
- CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\,
- ((CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT/C.TOT_BAD_CNT END)-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\,
+ E.CUST_CNT / C.TOT_CUST_CNT AS CUST_RATIO\,
+ E.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\,
+ (E.BAD_CNT/C.TOT_BAD_CNT-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\,
(CC.TOT_CUST_CNT-CC.TOT_BAD_CNT)/CC.TOT_CUST_CNT AS NORMAL_RATIO
FROM E LEFT JOIN C ON C.EFFECTIVE_Q = E.EFFECTIVE_Q
AND C.SCORE_AREA = E.SCORE_AREA
@@ -1728,7 +1876,7 @@ FROM KS INNER JOIN AR ON AR.EFFECTIVE_Q = KS.EFFECTIVE_Q
LEFT JOIN (SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT\, C.TOT_CUST_CNT - C.TOT_BAD_CNT AS TOT_NORMAL_CNT FROM C ) CC
ON CC.EFFECTIVE_Q = KS.EFFECTIVE_Q
ORDER BY KS.EFFECTIVE_Q",,,,,,
-"19","rptModelMonitorStable","模型稳定性监控报表","DM DBMS","WITH A AS (
+"8","rptModelMonitorStable","模型稳定性监控报表","MYSQL","WITH A AS (
SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION
SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION
SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION
@@ -1748,12 +1896,12 @@ B AS (
FROM VIEW_RPT_BASE_INFO V\,A
WHERE V.MODEL_SCORE > A.DOWN
AND V.MODEL_SCORE <= A.UP
- AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' )
+ AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' )
AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' )
AND V.MODEL_CODE='#MODEL_CODE'
)\,
B1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM B GROUP BY EFFECTIVE_Q\, SCORE_AREA )\,
-B2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\,
+B2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\,
B3 AS (
SELECT
B1.EFFECTIVE_Q\,
@@ -1769,12 +1917,12 @@ C AS (
V.CUST_NO
FROM VIEW_RPT_BASE_INFO V\,A
WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP
- AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' )
- AND DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' )
+ AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' )
+ AND DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' )
AND V.MODEL_CODE='#MODEL_CODE'
)\,
C1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM C GROUP BY EFFECTIVE_Q\, SCORE_AREA )\,
-C2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\,
+C2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\,
C3 AS (
SELECT
C1.EFFECTIVE_Q\,
@@ -1800,21 +1948,21 @@ FROM (
AND C3.SCORE_AREA = B3.SCORE_AREA
) T GROUP BY T.EFFECTIVE_Q
) TT ORDER BY TT.EFFECTIVE_Q",,,,,,
-"20","rptRatingOverturn","客户评级推翻情况报表","DM DBMS","SELECT
+"9","rptRatingOverturn","客户评级推翻情况报表","MYSQL","SELECT
T.EFFECTIVE_MONTH\,
T.CUST_CNT\,
T.OVERTURN_CNT\,
- ROUND(CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END,4) AS OVERTURN_RATIO\,
- ROUND(CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END,4) AS UP_OVERTURN_RATIO\,
- ROUND(CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END,4) AS DOWN_OVERTURN_RATIO\,
- ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END,4) AS ONE_LVL_RATIO\,
- ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END,4) AS TWO_LVL_RATIO\,
- ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END,4) AS THREE_LVL_RATIO\,
- ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END,4) AS THREE_MORE_LVL_RATIO
+ CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END AS OVERTURN_RATIO\,
+ CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END AS UP_OVERTURN_RATIO\,
+ CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END AS DOWN_OVERTURN_RATIO\,
+ CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END AS ONE_LVL_RATIO\,
+ CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END AS TWO_LVL_RATIO\,
+ CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END AS THREE_LVL_RATIO\,
+ CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END AS THREE_MORE_LVL_RATIO
FROM (
SELECT
V.EFFECTIVE_MONTH\,
- CAST(COUNT(V.CUST_NO) AS DECIMAL) AS CUST_CNT\,
+ COUNT(V.CUST_NO) AS CUST_CNT\,
SUM(CASE WHEN V.ORIGINAL_LEVEL <> V.INIT_LEVEL THEN 1 ELSE 0 END) AS OVERTURN_CNT\,
SUM(CASE WHEN V.ORDER_NUM > V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS UP_OVERTURN_CNT\,
SUM(CASE WHEN V.ORDER_NUM < V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS DOWN_OVERTURN_CNT\,
diff --git a/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java b/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java
index 4ee8ea5..d634f27 100644
--- a/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java
+++ b/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java
@@ -30,7 +30,7 @@ public interface DefaultAutoTmpRepository extends DaoRepository {
@Transactional
@Modifying
@@ -31,11 +33,15 @@ public interface RebirthAutoTmpRepository extends DaoRepository expoRuleMainList = null;
private Map> expoRuleDtlMap = null;
@@ -50,10 +55,31 @@ public class RiskExposureBatchServiceImpl implements RiskExposureBatchService, J
@Override
public void exec() throws Exception{
cacheRule();
+ insertAutoRiskExposureDebt();
recogRiskExposure();
saveRiskExposureResult();
}
+ /**
+ * 插入自动风险暴露分类的基础债项数据
+ * @throws Exception
+ */
+ private void insertAutoRiskExposureDebt() throws Exception {
+ DatabaseType type = DatabaseType.fromMetaData(dataSource);
+ String sql = "select sql_text from ns_r_cfg_rpt_sql where report_id='insertRiskExposureAutoData' and database_type='" + type + "'";
+ Map map = jdbcTemplate.queryForMap(sql);
+ if(map != null && map.get("SQL_TEXT") != null){
+ sql = String.valueOf(map.get("SQL_TEXT"));
+ Map params = new HashMap<>();
+ params.put("DATA_DT", DateUtil.getLastMonthEndString());
+ sql = RptSqlFormat.format(sql, params);
+ //先删除相同数据日期的债项数据,避免任务重跑引起数据重复
+ jdbcTemplate.execute("delete from P_IRS_RISK_EXPOSURE_DEBT where DATA_DT='" + DateUtil.getLastMonthEndString() + "'");
+ //执行插入语句
+ jdbcTemplate.execute(sql);
+ }
+ }
+
/**
* 保存风险暴露分类结果
*/
@@ -65,7 +91,7 @@ public class RiskExposureBatchServiceImpl implements RiskExposureBatchService, J
private void recogRiskExposure() {
List debts = riskExposureDebtService.findLastMonthData();
- if(debts != null){
+ if(debts != null && debts.size() > 0){
//删除风险暴露分类结果临时表中的数据
jdbcTemplate.execute("delete from P_IRS_RISK_EXPOSURE_TMP");
String sql = "insert into P_IRS_RISK_EXPOSURE_TMP(ID,BUSINESS_NO,PRODUCT_TYPE,CUST_NO,CUST_NAME,START_WAY,IS_NEED_OPERATE,ADJUST_END_DATE,FINISH_DATE,SYS_RESULT,MANAGER_NAME,MGER_ORG_NM,CUST_TYPE,DATA_COME_FROM_,CREATOR_,CREATE_DATE_,LAST_MODIFIER_,LAST_MODIFYDATE_,CORP_CODE_) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/utils/RptSqlFormat.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/utils/RptSqlFormat.java
new file mode 100644
index 0000000..b4f7d37
--- /dev/null
+++ b/irbs.riskExposure/src/main/java/irbs/riskExposure/utils/RptSqlFormat.java
@@ -0,0 +1,36 @@
+package irbs.riskExposure.utils;
+
+import io.sc.platform.core.util.StringUtil;
+
+import java.util.Map;
+
+public class RptSqlFormat {
+
+ public static String format(String sql, Map params){
+ if(params != null) {
+ for(String p : params.keySet()){
+ if(StringUtil.isNullOrEmpty(params.get(p))){
+ sql = replace(sql, p);
+ continue;
+ }
+ String c = "#" + p;
+ sql = sql.replaceAll(c, params.get(p));
+ if(!StringUtil.isNullOrEmpty(params.get(p)) && sql.indexOf("<" + p + ">") != -1){
+ sql = sql.replaceAll("<" + p + ">", "").replaceAll("" + p + ">", "");
+ }
+ }
+ }
+ return sql;
+ }
+
+ public static String replace(String sql, String code){
+ if(sql.indexOf("<"+code+">") == -1){
+ return sql;
+ }
+ sql = sql.substring(0, sql.indexOf("<"+code+">")) + sql.substring(sql.indexOf(""+code+">")+code.length()+4);
+ if(sql.indexOf("<"+code+">") != -1){
+ sql = replace(sql, code);
+ }
+ return sql;
+ }
+}