select a.city, total_loan_amount, average_loan_amount, total_customers, most_applied_loan_type from ( select city, sum(loan_amount) total_loan_amount, round( sum(loan_amount) / count(distinct la.customer_id), 2 ) average_loan_amount from loan_applications la join customers c on la.customer_id = c.customer_id group by 1 ) a join ( select city, count(customer_id) total_customers from customers group by 1 ) b on a.city = b.city join ( select city, loan_type_name most_applied_loan_type from ( select city, loan_type_name, lat.loan_type_id, count(*) applied_loan_type, row_number() over ( partition by city order by count(*) desc, lat.loan_type_id asc ) rk from loan_types lt join loan_application_types lat on lt.loan_type_id = lat.loan_type_id join loan_applications la on lat.application_id = la.application_id join customers c on la.customer_id = c.customer_id group by 1, 2, 3 ) b where rk = 1 ) d on b.city = d.city order by a.city