当前位置: 首页 > news >正文

SQL120 贷款情况

SQL120 贷款情况

withcity_loan_stats as (selectcity,sum(loan_amount) as total_loan_amount,round(sum(loan_amount) / count(distinct customer_id), 2) as average_loan_amount,count(distinct customer_id) as total_customersfromloan_applicationsjoin customers using (customer_id)group bycity),popular_loan_types as (selectcity,loan_type_name as most_applied_loan_typefrom(selectcity,loan_type_name,loan_type_id,row_number() over (partition bycityorder bycount(*) desc,loan_type_id asc) as rkfromloan_applicationsjoin customers using (customer_id)join (select distinctapplication_id,loan_type_name,loan_types.loan_type_idfromloan_typesjoin loan_application_types using (loan_type_id)) as t1 using (application_id)group bycity,loan_type_name,loan_type_id) as t2whererk = 1)
select*
fromcity_loan_statsjoin popular_loan_types using (city)
order bycity

SQL查询分析

这个查询的目的是分析各城市的贷款申请数据,主要关注三个方面的指标:贷款总额、客户平均贷款额,以及最受欢迎的贷款类型。

1. 整体结构

查询使用了两个CTE(Common Table Expressions):

  • city_loan_stats:计算城市级别的贷款汇总统计
  • popular_loan_types:找出每个城市最受欢迎的贷款类型

最后将这两个CTE通过城市(city)关联,输出完整的分析结果。

2. 第一个CTE:city_loan_stats

SELECTcity,SUM(loan_amount) AS total_loan_amount,ROUND(SUM(loan_amount) / COUNT(DISTINCT customer_id), 2) AS avg_loan_per_customer,COUNT(DISTINCT customer_id) AS customer_count
FROMloan_applicationsJOIN customers USING (customer_id)
GROUP BYcity

功能​:

  • 计算每个城市的总贷款金额(total_loan_amount)
  • 计算每个客户的平均贷款金额(avg_loan_per_customer)
  • 统计每个城市的客户数量(customer_count)

实现方式​:

  1. 通过JOIN连接loan_applicationscustomers
  2. 按城市(city)分组
  3. 使用聚合函数计算各项指标

3. 第二个CTE:popular_loan_types

SELECTcity,loan_type_name AS most_popular_loan_type
FROM(SELECTcity,loan_type_name,loan_type_id,ROW_NUMBER() OVER (PARTITION BY cityORDER BY COUNT(*) DESC, loan_type_id ASC) AS rankFROMloan_applicationsJOIN customers USING (customer_id)JOIN (SELECT DISTINCTapplication_id,loan_type_name,loan_types.loan_type_idFROMloan_typesJOIN loan_application_types USING (loan_type_id)) AS loan_type_data USING (application_id)GROUP BYcity,loan_type_name,loan_type_id) AS ranked_loans
WHERErank = 1

功能​:

  • 找出每个城市申请次数最多的贷款类型

实现方式​:

  1. 通过多层连接获取完整的贷款申请数据(包括城市和贷款类型信息)
  2. 按城市和贷款类型分组统计申请次数
  3. 使用窗口函数ROW_NUMBER()为每个城市的贷款类型按申请次数排序
    • PARTITION BY city:按城市分区
    • ORDER BY COUNT(*) DESC:按申请次数降序
    • loan_type_id ASC:次数相同时按loan_type_id升序(作为tie-breaker)
  4. 筛选出排名第一的记录(rank = 1)

4. 最终查询

SELECTcls.city,cls.total_loan_amount,cls.avg_loan_per_customer,cls.customer_count,plt.most_popular_loan_type
FROMcity_loan_stats clsJOIN popular_loan_types plt USING (city)
ORDER BYcls.city

功能​:

  • 将两个CTE的结果按城市关联
  • 输出完整的城市贷款分析报告
  • 按城市名称排序

5. 业务价值

这个查询提供了以下业务洞察:

  1. 城市贷款规模​:通过总贷款金额了解哪些城市贷款业务量大
  2. 客户价值​:通过平均贷款金额了解不同城市客户的贷款规模
  3. 客户基础​:通过客户数量了解各城市市场渗透率
  4. 产品偏好​:了解不同城市客户最青睐的贷款产品类型
http://www.dtcms.com/a/317599.html

相关文章:

  • OpenCV校准双目相机并测量距离
  • AsyncAppende异步 + 有界队列 + 线程池实现高性能日志系统
  • 【Axure高保真原型】批量添加和删除图片
  • 目录遍历漏洞学习
  • 概率/期望 DP Jon and Orbs
  • 低代码系统的技术深度:超越“可视化操作”的架构与实现挑战
  • 基于51单片机的温控风扇Protues仿真设计
  • 【FAQ】Script导出SharePoint 目录文件列表并统计大小
  • SQL167 SQL类别高难度试卷得分的截断平均值
  • Tdesign-React 请求接口 415 问题借助 chatmaster 模型处理记录
  • Solidity 编程进阶
  • docker容器临时文件去除,服务器容量空间
  • leetcode643:子数组最大平均数 I(滑动窗口入门之定长滑动窗口)
  • 上下文工程
  • .Net下载共享文件夹中的文件
  • excel名称管理器显示隐藏
  • Java高频方法总结
  • 排序算法归并排序
  • HarmonyOS应用开发环境搭建以及快速入门介绍
  • OpenAI隆重推出开源大模型:GPT-OSS
  • 面试题:基础的sql命令
  • Java NIO
  • 从 LinkedIn 到 Apache:Kafka 的架构设计与应用场景
  • 【25-cv-08899/08985】Lisa Audit 23张版权画作暴雷,Keith律所双案并发冻结跨境店铺!
  • Numpy科学计算与数据分析:Numpy入门之多平台安装与基础环境配置
  • Python 自动化与 Web 应用开发详细教案
  • 前端全栈修炼手册:从 Vue3 到工程化的进阶之路
  • Ethereum: 深入Hardhat Console, 我们的智能合约瑞士军刀
  • 微型导轨:智能家居抽屉的智能化应用
  • Text2SQL 智能问答系统开发-spider验证集(三)