CyanLeo

2022-04-17   阅读量: 400

数据分析师 Mysql

敏捷算法班-数据库-商业情景应用情景8疑问与个人解决方法

扫码加入数据分析学习群

题目

Bank公司的贷款风险分析人员希望得到贷款客户在发放贷款前一年的交易数据。

(经同学启发、结果实例和老师的解法,我认为题目中的‘客户’应该为‘账号’,即account。同时,有一张客户表记录了客户信息,如果要针对 ‘客户’ 查询结果则另有解法。)

疑问

有些符合要求的记录被过滤掉了,初步认定为日期计算有问题,不加连接条件的查询结果如下,共查询到190103条记录:1.pngimage-20220417224900834从图中可以看出,如果对贷款日期和交易日期不加处理,它们的数据类型为date,直接相减会出现一个不明含义的数值,比如,'1994-01-05' 和 '1993-02-26' 相减返回结果为9879。

测试

测试运算方式:

2.pngimage-20220417213519218

可以看出这两个日期实际相差不到一年,添加连接条件后,这些结果都被过滤掉了,日期计算依然不是间隔天数:

image-202204172254076783.png

解决方案

计算两日期的间隔天数有下面3种方式:

SELECT DATEDIFF('1994-01-05', '1993-02-26');
SELECT TIMESTAMPDIFF(day, '1993-02-26', '1994-01-05'); -- 和DATEDIFF不同之处是要把小日期放在前
SELECT TO_DAYS('1994-01-05') - TO_DAYS('1993-02-26');

所以我的解法是:

image-202204172246113304.png

参考结果:

image-202204172258517315.png

如有不当之处欢迎老师和同学指正 ; )


102.4609 4 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子