select
ct.pay_ability,
CONCAT(
ROUND(SUM(CASE WHEN lt.overdue_days is not null THEN 1 ELSE 0 END)/COUNT(*)*100,1),'%') as overdue_ratio
FROM
loan_tb as lt inner join customer_tb as ct
on lt.customer_id = ct.customer_id
group by ct.pay_ability
ORDER BY overdue_ratio DESC
知识点
CASE WHEN lt.overdue_days IS NOT NULL THEN 1 ELSE 0 END:判断客户是否有逾期行为,overdue_days字段不为NULL即记作1,否则记作0。
SUM(...):计算有逾期行为的客户数量,即上一步记作1的客户数量。
COUNT(*):计算总客户数量。
ROUND(...,1):将结果四舍五入保留一位小数。
CONCAT(...,'%'):输出格式为‘数字’+‘%’,此处使用字符串操作,CONCAT(A,B)即将A字符串和B字符串连接成‘AB’字符串。

京公网安备 11010502036488号