SELECT pay_ability, CONCAT(ROUND(SUM(is_overdue)*100.0/COUNT(*), 1), '%') AS overdue_ratio FROM ( SELECT c.pay_ability, MAX(CASE WHEN l.overdue_days > 0 THEN 1 ELSE 0 END) AS is_overdue FROM customer_tb c JOIN loan_tb l ON c.customer_id = l.customer_id GROUP BY c.customer_id ) t GROUP BY pay_ability ORDER BY overdue_ratio DESC;
大部分题解考虑的都是 合同占比,而不是 客户占比 。
如果一个客户不止一个合同,答案就会出错。