SQL Server:如何计算获批贷款申请占比并创建统计视图
搞定SQL Server贷款申请视图:平均处理时间+获批占比
嘿,作为SQL新手能搞定平均处理时间已经很棒啦!我来帮你补上获批申请占比的计算,把整个视图的写法梳理清楚~
首先先明确几个前提(如果你的表字段不一样,替换成自己的就行):
假设你的贷款申请表叫LoanApplications,包含以下关键字段:
SubmittedDate:申请提交时间ProcessedDate:申请处理完成时间ApprovalStatus:审批状态(比如'Approved'代表获批,其他值代表未获批)
1. 平均处理时间的计算(整合你已完成的部分)
用DATEDIFF函数计算提交到处理完成的时间差(这里按天算,你也可以换成hour/minute等单位),然后取平均值。建议排除还没处理完的申请(ProcessedDate IS NOT NULL),不然会拉低平均时间的准确性。
2. 获批申请占比的计算
核心逻辑是获批申请数 ÷ 总申请数,用CASE语句配合聚合函数就能轻松实现:
- 用
SUM(CASE WHEN ApprovalStatus = 'Approved' THEN 1 ELSE 0 END)统计获批的申请数量 - 用
COUNT(*)统计总申请数(如果要只统计已处理的,就换成COUNT(ProcessedDate)) - 用
NULLIF(COUNT(*), 0)避免总申请数为0时出现除以0的错误(此时结果会显示NULL而非报错) - 乘以
100.0转成百分比格式,再用ROUND保留2位小数更美观
完整的视图创建代码
CREATE VIEW vw_LoanApplicationMetrics AS SELECT -- 平均处理时间(单位:天,可按需换成hour/minute) AVG(DATEDIFF(day, SubmittedDate, ProcessedDate)) AS AvgProcessingTime, -- 获批申请占比(百分比格式,保留2位小数) ROUND( (SUM(CASE WHEN ApprovalStatus = 'Approved' THEN 1 ELSE 0 END) * 100.0) / NULLIF(COUNT(*), 0), 2 ) AS ApprovedPercentage FROM LoanApplications -- 可选:排除未处理完成的申请,根据业务需求决定是否保留 WHERE ProcessedDate IS NOT NULL;
代码小提示
如果你的审批状态不是用'Approved'标记(比如用1代表获批),把ApprovalStatus = 'Approved'改成对应的条件就行,比如ApprovalStatus = 1。
内容的提问来源于stack exchange,提问作者John Ohara
相关产品推荐
相关产品推荐

