with l_type_temp as ( select city,loan_type_name, count(la.customer_id) as count_type,lat.loan_type_id from loan_application_types lat join loan_types lt on lt.loan_type_id=lat.loan_type_id join loan_applications la on la.application_id=lat.application_id join customers c on c.customer_id=la.customer_id group by city,lat.loan_type_id,loan_type_name ), get_rn_temp as ( select city,loan_type_name, count_type,loan_type_id, rank() over(partition by city order by count_type DESC,loan_type_id) as rn from l_type_temp ), cal_temp as ( SELECT c.city,sum(loan_amount) as total_loan_amount, round( sum(loan_amount)/count(distinct la.customer_id) ,2) as average_loan_amount, count(distinct la.customer_id) as total_customers FROM customers c join loan_applications la on la.customer_id=c.customer_id group by c.city ) select ct.city,total_loan_amount,average_loan_amount,total_customers, loan_type_name as most_applied_loan_type from cal_temp ct join get_rn_temp gr on gr.city=ct.city and rn=1 order by ct.city;

京公网安备 11010502036488号