with
table1 as(
select
c.city,
round(sum(a.loan_amount),2) as total_loan_amount,
round(sum(a.loan_amount)/count(distinct a.customer_id),2) as average_loan_amount,
count(distinct a.customer_id) as total_customers
from loan_applications a
left join
(select
t1.loan_type_id,
t2.application_id,
t1.loan_type_name
from loan_types t1
left join loan_application_types t2 on t1.loan_type_id=t2.loan_type_id
) t
on a.application_id=t.application_id
left join customers c
on a.customer_id=c.customer_id
group by c.city),
table2 as(
select
c.city,
t.loan_type_name,
row_number() over(partition by c.city order by count(a.application_id) desc,t.loan_type_id) as rn
from loan_applications a
left join
(select
t1.loan_type_id,
t2.application_id,
t1.loan_type_name
from loan_types t1
left join loan_application_types t2 on t1.loan_type_id=t2.loan_type_id
) t
on a.application_id=t.application_id
left join customers c
on a.customer_id=c.customer_id
group by c.city,t.loan_type_id,t.loan_type_name)
select
table1.*,
table2.loan_type_name as most_applied_loan_type
from table1
left join (select city,loan_type_name from table2 where rn=1) table2
on table1.city=table2.city