ITPub博客

首页 > 数据库 > 数据库开发技术 > 你的贷款今天逾期了吗?

你的贷款今天逾期了吗?

原创 数据库开发技术 作者:猴子数据分析 时间:2021-10-28 21:00:00 0 删除 编辑


【题目】


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


用户ID

逾期天数

1

45

2

85

3

3

4

9

5

38

6

47

7

117

8

53

9

20

10

36

……

……


当逾期天数=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。


selectsum(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 逾期天数表;

查询结果:


M0

M1

M2

M3

M4+

1

16

12

12

10

  

【本题考点】

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





推荐:如何从零学会SQL?


原文作者:猴子数据分析;如有侵权,请联系管理员删除。

下一篇: 当风起时
请登录后发表评论 登录
全部评论

注册时间:2017-01-16

  • 博文量
    865
  • 访问量
    345505