You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL计算银行客户流失率结果为0的问题求助

问题原因与解决方案

问题出在整数除法的截断特性:SQL中两个整数相除时,会自动截断小数部分只保留整数结果。比如流失客户数是3、总客户数是100时,3/100的整数运算结果为0,再乘以100依然是0。

修改方案(任选其一即可)

  1. 将其中一个运算数转换为浮点类型,强制触发浮点除法:
SELECT
    COUNT(*) AS total_customers,
    SUM(CASE WHEN churn = 'Yes' THEN 1 ELSE 0 END) AS churned_customers,
    (SUM(CASE WHEN churn = 'Yes' THEN 1 ELSE 0 END) / CAST(COUNT(*) AS FLOAT)) * 100 AS churn_rate_percentage
FROM
    bank_churn_data
  1. 用1.0替代1作为CASE语句的返回值,让分子变成浮点数:
SELECT
    COUNT(*) AS total_customers,
    SUM(CASE WHEN churn = 'Yes' THEN 1.0 ELSE 0 END) AS churned_customers,
    (SUM(CASE WHEN churn = 'Yes' THEN 1.0 ELSE 0 END) / COUNT(*)) * 100 AS churn_rate_percentage
FROM
    bank_churn_data
  1. 调整运算顺序,先乘100.0再做除法,避免整数截断:
SELECT
    COUNT(*) AS total_customers,
    SUM(CASE WHEN churn = 'Yes' THEN 1 ELSE 0 END) AS churned_customers,
    (SUM(CASE WHEN churn = 'Yes' THEN 1 ELSE 0 END) * 100.0 / COUNT(*)) AS churn_rate_percentage
FROM
    bank_churn_data

以上方法都能让除法运算保留小数部分,最终得到正确的流失率百分比。

内容的提问来源于stack exchange,提问作者Riinu Anslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:05:59