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

如何计算fuel_type_1列中电动车占比?SQL查询返回占比为0异常

解决SQL整数除法导致百分比计算为0的问题

问题出在整数除法上:多数SQL数据库中,两个整数相除会直接舍弃小数部分,只返回整数结果。你的计算里133除以38080的结果远小于1,被截断为0,再乘以100自然还是0。

下面是几种可行的修复方案:

方案1:将计数结果转为浮点型

通过CAST把其中一个整数转为浮点类型,强制运算使用浮点除法:

SELECT 
    COUNT(CASE WHEN fuel_type_1 = 'Electricity' THEN 1 END) AS electricity_count,
    COUNT(*) AS total_count,
    (CAST(COUNT(CASE WHEN fuel_type_1 = 'Electricity' THEN 1 END) AS FLOAT) / COUNT(*)) * 100 AS electric_percentage
FROM 
    fuel$

方案2:先乘100再做除法

用100.0(浮点型)代替100,让运算自动转为浮点模式:

SELECT 
    COUNT(CASE WHEN fuel_type_1 = 'Electricity' THEN 1 END) AS electricity_count,
    COUNT(*) AS total_count,
    (COUNT(CASE WHEN fuel_type_1 = 'Electricity' THEN 1 END) * 100.0 / COUNT(*)) AS electric_percentage
FROM 
    fuel$

方案3:用SUM生成浮点累加值

在SUM的CASE表达式里直接使用1.0,得到浮点型的电动车数量,再做除法:

SELECT 
    SUM(CASE WHEN fuel_type_1 = 'Electricity' THEN 1 ELSE 0 END) AS electricity_count,
    COUNT(*) AS total_count,
    (SUM(CASE WHEN fuel_type_1 = 'Electricity' THEN 1.0 ELSE 0 END) / COUNT(*)) * 100 AS electric_percentage
FROM 
    fuel$

如果需要固定小数位数(比如保留2位),可以用ROUND函数包裹百分比计算式,例如:ROUND((CAST(...) / COUNT(*)) * 100, 2)。

内容的提问来源于stack exchange,提问作者Kaya Gore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:11:09