SQL你的贷款今天逾期了吗?(多条件求和)

【题目】

一家金融贷款公司,需要了解用户贷款逾期未还的情况。该公司数据库中有一张用户"贷款逾期天数"表。

当逾期天数=0时,记为M0,

逾期天数在[1,30]区间时,记为M1,

逾期天数在[31,60]区间时, 记为M2,

逾期天数在[61,90]区间时,记为M3,

其他更高的逾期天数记为M4+,

现在需要在数据库中分析出每种逾期时段(M0、M1、M2、M3、M4+)的订单个数,如果是你,会如何分析呢?

【解题思路】

1.多条件判断

每个逾期时段(M0、M1、M2、M3、M4+)表示一种条件,这是典型的多条件判断业务问题。

遇到这种业务问题,要想到《猴子 从零学会SQL》里讲过的用case语句来解决多条件判断问题。


select
(case when 逾期天数=0 then 1 else 0 end) as "M0",
(case when 逾期天数 between 1 and 30 then 1 else 0 end) as "M1",
(case when 逾期天数 between 31 and 60 then 1 else 0 end) as "M2",
(case when 逾期天数 between 61 and 90 then 1 else 0 end) as "M3",
(case when 逾期天数>90 then 1 else 0 end) as "M4+"
from 逾期天数表;

2.每种逾期时段订单数

上面对满足逾期时间段的数据标记为“1”,不满足的标记为0 。例如,逾期时段M0(逾期天数=0)


(case when 逾期天数=0 then 1 else 0 end) as "M0"

 现在要得到每种逾期时段订单数,那么只需要对每逾期时段里标记为1的值进行统计求和就可以,也就是在上一步SQL里加上求和函数sum。


select
sum(case when 逾期天数=0 then 1 else 0 end) as "M0",
sum(case when 逾期天数 between 1 and 30 then 1 else 0 end) as "M1",
sum(case when 逾期天数 between 31 and 60 then 1 else 0 end) as "M2",
sum(case when 逾期天数 between 61 and 90 then 1 else 0 end) as "M3",
sum(case when 逾期天数>90 then 1 else 0 end) as "M4+"
from 逾期天数表;

【本题考点】

当遇到多条件判断的业务问题,要想到用case语句来解决。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值