with all_customer as (
select
customer_id,
sum(loan_amount) as loan_amount
from loan_applications
group by customer_id
),
loan_amount as (
select
c.city,
round(sum(a.loan_amount),2) as total_loan_amount,
round(avg(a.loan_amount),2) as average_loan_amount,
count(c.customer_id) as total_customers
from
customers c
left join all_customer a on c.customer_id=a.customer_id
group by c.city
),
loan_type as (
select
t2.city,
t3.loan_type_id,
t3.loan_type_name,
count(*) as cnt
from
customers t2
left join loan_applications t1 on t2.customer_id=t1.customer_id
left join loan_application_types t4 on t4.application_id=t1.application_id
left join loan_types t3 on t3.loan_type_id=t4.loan_type_id
group by t2.city, t3.loan_type_id,t3.loan_type_name
),
loan_rk as (
select
city,
loan_type_name as most_applied_loan_type
from
(select
city,
loan_type_name,
row_number() over (partition by city order by cnt desc, loan_type_id asc) as rk
from loan_type) t
where rk=1
)
select
l1.city,
l1.total_loan_amount,
l1.average_loan_amount,
l1.total_customers,
l2.most_applied_loan_type
from
loan_amount l1
left join loan_rk l2 on l1.city=l2.city
order by city asc
分成两大部分,统计人数上的amount和loan的类型,分别计算再join

京公网安备 11010502036488号