select case when overdue_days > 0 then ‘逾期’ when overdue_days = 0 and remain_principal > 0 then ‘在贷’ end, count(distinct sso_id) as remain_cnt from ( (select * from p02.ods_fin_notify_sms_send_info where ( substring(business_batch_no, 1, 22) = 'SNO2023070417590292025' or substring(business_batch_no, 1, 22) = 'SNO2023052219260890070' ) and return_msg = '处理成功') as a left join ( select dayno, ssoid, overdue_days, remain_principal from p02.dwd_loan_user_loan_apply_all_d where dayno = 20230708 or dayno = 20230523 ) as b on substring(a.business_batch_no, -8) = b.dayno and a.sso_id = b.ssoid ) group by case when overdue_days > 0 then ‘逾期’ when overdue_days = 0 and remain_principal > 0 then ‘在贷’ end
时间: 2024-04-12 17:34:44 浏览: 83
【大数据基础】基于信用卡逾期数据的Spark数据处理与分析 结果
5星 · 资源好评率100%
以下是根据您提供的 SQL 查询语句进行的解释:
该查询语句是对两个子查询进行左连接,并根据条件进行筛选和计数。首先,子查询 a 从表 `p02.ods_fin_notify_sms_send_info` 中选择符合条件的记录,其中条件为 `business_batch_no` 的前22位等于 'SNO2023070417590292025' 或 'SNO2023052219260890070',并且 `return_msg` 等于 '处理成功'。然后,子查询 b 从表 `p02.dwd_loan_user_loan_apply_all_d` 中选择符合条件的记录,其中条件为 `dayno` 等于 20230708 或 20230523。
接下来,这两个子查询通过关联条件 `substring(a.business_batch_no, -8) = b.dayno and a.sso_id = b.ssoid` 进行左连接。
最后,根据 `overdue_days` 和 `remain_principal` 的值分类统计并计算独立的 `sso_id` 数量。当 `overdue_days > 0` 时,分类为 '逾期',当 `overdue_days = 0` 且 `remain_principal > 0` 时,分类为 '在贷'。
请注意,在 SQL 查询中使用的引号可能需要根据您的数据库系统进行适当调整。
阅读全文