如何用单条SQL查询展示IBM Telco数据集客户流失/未流失占比
IBM Telco数据集流失率计算SQL解决方案
基于你的需求,以下两种单条SQL查询方式可以直接输出流失客户与未流失客户的占比百分比,匹配你期望的格式:
方法一:条件聚合(简洁高效)
利用CASE语句结合聚合函数,在一次表扫描中完成统计:
SELECT ROUND(100 * SUM(CASE WHEN churn_value = 1 THEN 1 ELSE 0 END) / COUNT(*), 1) AS churned, ROUND(100 * SUM(CASE WHEN churn_value = 0 THEN 1 ELSE 0 END) / COUNT(*), 1) AS not_churned FROM Telco_customer_churn;
SUM(CASE WHEN churn_value = 1 THEN 1 ELSE 0 END):统计流失客户总数COUNT(*):统计总客户数ROUND(..., 1):将百分比保留1位小数,和你期望的输出格式一致
方法二:子查询获取总客户数
先通过子查询计算总客户数,再分别计算两类客户的占比:
SELECT ROUND(100 * (SELECT COUNT(*) FROM Telco_customer_churn WHERE churn_value = 1) / total.total_customers, 1) AS churned, ROUND(100 * (SELECT COUNT(*) FROM Telco_customer_churn WHERE churn_value = 0) / total.total_customers, 1) AS not_churned FROM (SELECT COUNT(*) AS total_customers FROM Telco_customer_churn) AS total;
- 子查询
(SELECT COUNT(*) FROM Telco_customer_churn)先计算总客户数,避免重复扫描全表 - 两个嵌套子查询分别统计流失/未流失客户数,再计算占比
内容的提问来源于stack exchange,提问作者Lana
相关产品推荐
相关产品推荐

