风控研发中心/报表逻辑/导数sql及说明/5月6月入催出催及坏账拆分

 
jira: JFBI-27 - 入催出催和坏账情况 ( 关闭)
5月6月入催出催及坏账拆分-入催出催
 
-- 1
select
-- l.end_time, -- 5.7
l.statis_time as '还款日', -- 5.8
-- sum(1) as '到期应还款笔数(所有)',
sum(case when(p.start_time >= '2017-05-01') then 1 else 0 end) as '到期应还款笔数',
sum(case when(p.start_time >= '2017-05-01' and l.order_status = 0 and datediff(date(l.update_time), l.end_time) < 2) then 1 else 0 end) as '按时还款笔数',
sum(case when(l.order_status in(0,3) and datediff(date(l.update_time), l.end_time) >= 2) then 1 else 0 end) as '入催数',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0,3) and datediff(date(l.update_time), l.end_time) >= 2) then 1 else 0 end) as '入催数(5月)',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and  datediff(date(l.update_time), l.end_time) between 2 and 11) then 1 else 0 end) as 'S1出催数(1-10)',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) between 2 and 21) then 1 else 0 end) as 'S2出催率(1-20)',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) between 2 and 31) then 1 else 0 end) as 'S3出催率(1-30)'
-- sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) >= 32) then 1 else 0 end) as 'S4出催率(30+)',
-- sum(case when(p.start_time >= '2017-05-01' and l.order_status in(3)) then 1 else 0 end) as '至今未还款'
from
(
    select
      id,start_time,end_time,date_add(end_time, interval 1 day) as statis_time,loan_type,order_status,update_time,member_id,
      REVERSE(LEFT(REVERSE(EDW.queryParentLoanId (id)), INSTR(REVERSE(EDW.queryParentLoanId (id)), ',') - 1)) as origin_loan_id
    from EDW.fin_vca_pda_loan
) l
inner join EDW.fin_vca_pda_loan p on p.id = l.origin_loan_id
where 1=1 and del_flag = 0
-- and l.loan_type = 0
and l.order_status not in (5,6)
and l.end_time >= '2017-05-07' and l.end_time < '2017-05-31'
group by l.statis_time
-- 2
select
-- l.end_time, -- 5.7
l.statis_time as '还款日', -- 5.8
-- sum(1) as '到期应还款笔数(所有)',
sum(case when(p.start_time >= '2017-06-01') then 1 else 0 end) as '到期应还款笔数',
sum(case when(l.order_status = 0 and p.start_time >= '2017-06-01' and datediff(date(l.update_time), l.end_time) < 2) then 1 else 0 end) as '按时还款笔数',
sum(case when(l.order_status in(0,3) and datediff(date(l.update_time), l.end_time) >= 2) then 1 else 0 end) as '入催数',
sum(case when(p.start_time >= '2017-06-01' and l.order_status in(0,3) and datediff(date(l.update_time), l.end_time) >= 2) then 1 else 0 end) as '入催数(6月)',
sum(case when(p.start_time >= '2017-06-01' and l.order_status in(0) and  datediff(date(l.update_time), l.end_time) between 2 and 11) then 1 else 0 end) as 'S1出催数(1-10)',
sum(case when(p.start_time >= '2017-06-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) between 2 and 21) then 1 else 0 end) as 'S2出催率(1-20)',
sum(case when(p.start_time >= '2017-06-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) between 2 and 31) then 1 else 0 end) as 'S3出催率(1-30)'
-- sum(case when(p.start_time >= '2017-06-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) >= 32) then 1 else 0 end) as 'S4出催率(30+)',
-- sum(case when(p.start_time >= '2017-06-01' and l.order_status in(3)) then 1 else 0 end) as '至今未还款'
from
(
    select
      id,start_time,end_time,date_add(end_time, interval 1 day) as statis_time,loan_type,order_status,update_time,member_id,
      REVERSE(LEFT(REVERSE(EDW.queryParentLoanId (id)), INSTR(REVERSE(EDW.queryParentLoanId (id)), ',') - 1)) as origin_loan_id
    from EDW.fin_vca_pda_loan
) l
inner join EDW.fin_vca_pda_loan p on p.id = l.origin_loan_id
where 1=1 and del_flag = 0
-- and l.loan_type = 0
and l.order_status not in (5,6)
and l.end_time >= '2017-06-07' and l.end_time < '2017-06-30'
group by l.statis_time
 
-- 3
select
-- l.end_time, -- 5.7
l.statis_time as '还款日', -- 5.8
-- sum(1) as '到期应还款笔数(所有)',
sum(case when(p.start_time >= '2017-05-01') then 1 else 0 end) as '到期应还款笔数',
sum(case when(p.start_time >= '2017-05-01' and l.order_status = 0 and datediff(date(l.update_time), l.end_time) < 2) then 1 else 0 end) as '按时还款笔数',
sum(case when(l.order_status in(0,3) and datediff(date(l.update_time), l.end_time) >= 2) then 1 else 0 end) as '入催数',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0,3) and datediff(date(l.update_time), l.end_time) >= 2) then 1 else 0 end) as '入催数(5月及以后)',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and  datediff(date(l.update_time), l.end_time) between 2 and 11) then 1 else 0 end) as 'S1出催数(1-10)',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) between 2 and 21) then 1 else 0 end) as 'S2出催率(1-20)',
sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) between 2 and 31) then 1 else 0 end) as 'S3出催率(1-30)'
-- sum(case when(p.start_time >= '2017-05-01' and l.order_status in(0) and datediff(date(l.update_time), l.end_time) >= 32) then 1 else 0 end) as 'S4出催率(30+)',
-- sum(case when(p.start_time >= '2017-05-01' and l.order_status in(3)) then 1 else 0 end) as '至今未还款'
from
(
    select
      id,start_time,end_time,date_add(end_time, interval 1 day) as statis_time,loan_type,order_status,update_time,member_id,
      REVERSE(LEFT(REVERSE(EDW.queryParentLoanId (id)), INSTR(REVERSE(EDW.queryParentLoanId (id)), ',') - 1)) as origin_loan_id
    from EDW.fin_vca_pda_loan
) l
inner join EDW.fin_vca_pda_loan p on p.id = l.origin_loan_id
where 1=1 and del_flag = 0
-- and l.loan_type = 0
and l.order_status not in (5,6)
and l.end_time >= '2017-05-07' and l.end_time < '2017-06-30'
group by l.statis_time
 
5月6月入催出催及坏账拆分-坏账
 
SELECT
    '5月' as '月份',
    COUNT(DISTINCT(CASE WHEN l.order_status IN(1,2,3) THEN l.member_id ELSE NULL END)) AS '所有应还款用户数', -- 所有应还款用户数
    COUNT(DISTINCT(CASE WHEN l.order_status IN(3) THEN l.member_id ELSE NULL END)) AS '到期应还未还人数', -- 到期应还未还人数
    COUNT(DISTINCT(CASE WHEN l.order_status IN(3) AND DATEDIFF(DATE(NOW()), l.end_time) >= 31 THEN l.member_id ELSE NULL END)) AS 'D30+逾期人数', -- D30+逾期人数\金额
    SUM(CASE WHEN l.order_status IN(3) AND DATEDIFF(DATE(NOW()), l.end_time) >= 31 THEN l.capital ELSE 0 END) AS 'D30+逾期金额', -- D30+逾期人数\金额
    SUM(CASE WHEN l.order_status IN(0,1,2,3) THEN l.capital ELSE 0 END) AS '放款总金额', -- 放款总金额
    SUM(CASE WHEN l.order_status IN(0) THEN l.capital ELSE 0 END) AS '还款总金额' -- 还款总金额
FROM
(
    SELECT
      id,start_time,end_time,DATE_ADD(end_time, INTERVAL 1 DAY) AS statis_time,loan_type,order_status,update_time,member_id,capital,
      REVERSE(LEFT(REVERSE(EDW.queryParentLoanId (id)), INSTR(REVERSE(EDW.queryParentLoanId (id)), ',') - 1)) AS origin_loan_id
    FROM EDW.fin_vca_pda_loan
) l
INNER JOIN EDW.fin_vca_pda_loan p ON p.id = l.origin_loan_id
WHERE 1=1
AND l.order_status IN(0,1,2,3)
AND p.start_time >= '2017-05-01' AND p.start_time < '2017-06-01'
union all
SELECT
    '6月(截至当前)' as '月份',
    COUNT(DISTINCT(CASE WHEN l.order_status IN(1,2,3) THEN l.member_id ELSE NULL END)) AS '所有应还款用户数', -- 所有应还款用户数
    COUNT(DISTINCT(CASE WHEN l.order_status IN(3) THEN l.member_id ELSE NULL END)) AS '到期应还未还人数', -- 到期应还未还人数
    COUNT(DISTINCT(CASE WHEN l.order_status IN(3) AND DATEDIFF(DATE(NOW()), l.end_time) >= 31 THEN l.member_id ELSE NULL END)) AS 'D30+逾期人数', -- D30+逾期人数\金额
    SUM(CASE WHEN l.order_status IN(3) AND DATEDIFF(DATE(NOW()), l.end_time) >= 31 THEN l.capital ELSE 0 END) AS 'D30+逾期金额', -- D30+逾期人数\金额
    SUM(CASE WHEN l.order_status IN(0,1,2,3) THEN l.capital ELSE 0 END) AS '放款总金额', -- 放款总金额
    SUM(CASE WHEN l.order_status IN(0) THEN l.capital ELSE 0 END) AS '还款总金额' -- 还款总金额
FROM
(
    SELECT
      id,start_time,end_time,DATE_ADD(end_time, INTERVAL 1 DAY) AS statis_time,loan_type,order_status,update_time,member_id,capital,
      REVERSE(LEFT(REVERSE(EDW.queryParentLoanId (id)), INSTR(REVERSE(EDW.queryParentLoanId (id)), ',') - 1)) AS origin_loan_id
    FROM EDW.fin_vca_pda_loan
) l
INNER JOIN EDW.fin_vca_pda_loan p ON p.id = l.origin_loan_id
WHERE 1=1
AND l.order_status IN(0,1,2,3)
AND p.start_time >= '2017-06-01' AND p.start_time < '2017-07-01'
union all
SELECT
    '5月以后(截至当前)' as '月份',
    COUNT(DISTINCT(CASE WHEN l.order_status IN(1,2,3) THEN l.member_id ELSE NULL END)) AS '所有应还款用户数', -- 所有应还款用户数
    COUNT(DISTINCT(CASE WHEN l.order_status IN(3) THEN l.member_id ELSE NULL END)) AS '到期应还未还人数', -- 到期应还未还人数
    COUNT(DISTINCT(CASE WHEN l.order_status IN(3) AND DATEDIFF(DATE(NOW()), l.end_time) >= 31 THEN l.member_id ELSE NULL END)) AS 'D30+逾期人数', -- D30+逾期人数\金额
    SUM(CASE WHEN l.order_status IN(3) AND DATEDIFF(DATE(NOW()), l.end_time) >= 31 THEN l.capital ELSE 0 END) AS 'D30+逾期金额', -- D30+逾期人数\金额
    SUM(CASE WHEN l.order_status IN(0,1,2,3) THEN l.capital ELSE 0 END) AS '放款总金额', -- 放款总金额
    SUM(CASE WHEN l.order_status IN(0) THEN l.capital ELSE 0 END) AS '还款总金额' -- 还款总金额
FROM
(
    SELECT
      id,start_time,end_time,DATE_ADD(end_time, INTERVAL 1 DAY) AS statis_time,loan_type,order_status,update_time,member_id,capital,
      REVERSE(LEFT(REVERSE(EDW.queryParentLoanId (id)), INSTR(REVERSE(EDW.queryParentLoanId (id)), ',') - 1)) AS origin_loan_id
    FROM EDW.fin_vca_pda_loan
) l
INNER JOIN EDW.fin_vca_pda_loan p ON p.id = l.origin_loan_id
WHERE 1=1
AND l.order_status IN(0,1,2,3)
AND p.start_time >= '2017-05-01' AND p.start_time < '2017-07-01'
 
 

转载于:https://www.cnblogs.com/shujuxiong/p/11257921.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于一个函数 f(x),如果它在某个点 x0 处有可导,则这个点处的导数可以定义为:f'(x0)= lim(h->0) [(f(x0+h)-f(x0))/h] 所以如果一个函数在某个点 x0 处的左右导数相等,那么就是说在这个点处,它的左右两侧的所有可导的函数的导数的极限值相等。 对于 x 的 -1/3 次方的函数,它的表达式为 y=x^(-1/3)。 如果我们要求这个函数在某个点 x0 处的左右导数,可以使用如下的公式: 左侧导数:lim(h->0) [(x0^(-1/3)-(x0-h)^(-1/3))/h] 右侧导数:lim(h->0) [((x0+h)^(-1/3)-x0^(-1/3))/h] 通过计算可以得到,这两个导数的值是不相等的,所以 x 的 -1/3 次方的函数在某个点 x0 处的左右导数并不相等。 ### 回答2: 首先,我们先计算x的-1/3次方,表示为x^(-1/3)。 x^(-1/3) = 1/x^(1/3) = 1/∛x 接下来,我们来求x^(-1/3)的左右导数。 左导数(x -> 0-): ∂/∂x (x^(-1/3)) = ∂/∂x (1/∛x) = ∂/∂x (x^(-1/3)) = -1/(3∛x^4) = -1/(3x^(4/3)) 右导数(x -> 0+): ∂/∂x (x^(-1/3)) = ∂/∂x (1/∛x) = ∂/∂x (x^(-1/3)) = -1/(3∛x^4) = -1/(3x^(4/3)) 可以看出,无论是左导数还是右导数,都等于-1/(3x^(4/3))。 因此,x的-1/3次方的左右导数是相等的。 ### 回答3: x的-1/3次方的导数是多项式函数的导数。对于多项式函数来说,导数是连续函数,因此它在每一个点的左右导数是相等的。 具体来说,x的-1/3次方的左导数和右导数都等于函数在该点的导数值。以x^(-1/3)为例: 左导数:lim(x→a-) [ (x^(-1/3) - a^(-1/3)) / (x - a) ] 右导数:lim(x→a+) [ (x^(-1/3) - a^(-1/3)) / (x - a) ] 其中,a为函数的某个定义域内的值。 对于这个特定的例子,可以使用导数的定义求出左导数和右导数的值。 左导数:lim(x→a-) [ (x^(-1/3) - a^(-1/3)) / (x - a) ] = (a^(-1/3) - a^(-1/3)) / (a - a) = 0 右导数:lim(x→a+) [ (x^(-1/3) - a^(-1/3)) / (x - a) ] = (a^(-1/3) - a^(-1/3)) / (a - a) = 0 可以看到,左导数和右导数的值都是0,说明在每一个点,x的-1/3次方的左右导数是相等的。 因此,在这个特定的情况下,x的-1/3次方的左右导数是相等的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值