【蚂蚁SQL面试题】蚂蚁数据研发一面面试题

打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3063

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
蚂蚁数据研发面试题:盘算贷款用户风险等级标题解析

一、标题背景

在数据处理惩罚中,我们有两张表,一张是用户贷款信息表dwd_trd_loan_tb_dd,包含uid(用户 id)、amt(贷款金额)、ovd_days(逾期天数)、dt(时间分区);另一张是逾期等级配置表dim_ovd_config_dd,包含ovd_days(逾期天数)、user_level(用户风险等级)。比方,当ovd_days = 1且user_level = 1,表现用户逾期天数 <= 1 时,用户风险等级都为 1;当ovd_days = 30且user_level = 2,表现用户逾期天数 > 1 同时 <= 30 时,用户风险等级为 2。标题是盘算 20241011 日所有贷款用户对应的风险等级。
二、测试数据预备

以下是创建表和插入测试数据的 SQL 代码:
  1. create table dwd_trd_loan_tb_dd (
  2. uid string,
  3. amt int,
  4. ovd_days int,
  5. dt string
  6. );
  7. create table dim_ovd_config_dd (
  8. ovd_days bigint,
  9. user_level bigint
  10. );
  11. INSERT INTO dwd_trd_loan_tb_dd VALUES
  12. ('1001',1000,0,'20241011'),
  13. ('1002',1000,33,'20241011'),
  14. ('1003',1000,12,'20241011'),
  15. ('1004',1000,68,'20241011')
  16. ;
  17. INSERT INTO dim_ovd_config_dd VALUES
  18. (1,1),
  19. (30,2),
  20. (60,3),
  21. (180,4);
复制代码
三、思绪分析


  • 表关联标题
    看到多张表,首先考虑举行 JOIN。但初看只能用逾期天数举行关联,却又无法直接关联,由于配置表数据量小,这里可以考虑笛卡尔积。
  • 数据处理惩罚标题
    在笛卡尔积后,必要判断每个用户的逾期天数是否小于所有配置的逾期天数,假如是则保留。这样会出现一个用户对应多个等级的情况,此时我们要取对应配置逾期天数最小的那一条。办理方法是按照uid举行分组,对配置逾期天数取最小值即为所需。
四、解题步骤


  • 第一步:表关联
    首先将两个表举行关联,使用以下 SQL 代码:
  1. with t as (
  2.     select l.*,l.ovd_days lovd_days,c.*,c.ovd_days covd_days from dwd_trd_loan_tb_dd l
  3.         join dim_ovd_config_dd c
  4.       on 1=1
  5. )
  6. select * from t ;
复制代码

  • 第二步:盘算用户风险等级
    在关联后的底子上,通过以下 SQL 代码盘算每个用户的最小风险等级:
  1. with t as (
  2.     select l.*,l.ovd_days lovd_days,c.*,c.ovd_days covd_days from dwd_trd_loan_tb_dd l
  3.         join dim_ovd_config_dd c
  4.       on 1=1
  5. )
  6. select uid,min(user_level) from t where lovd_days < covd_days group by uid  ;
复制代码
通过以上步骤,我们可以盘算出 20241011 日所有贷款用户对应的风险等级。这种方法通过奇妙的表关联和数据处理惩罚逻辑,办理了看似复杂的多表数据盘算标题。希望这篇博客对各人明白此类数据处理惩罚标题有所帮助。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

民工心事

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表