为何新增infection_rate列全部显示为0?
感染率计算显示0及列类型修改解决方案
修改列数据类型(无需重新导入CSV)
如果使用SQL Server,可直接通过ALTER TABLE语句修改目标列类型,无需重新导入整个数据集:
ALTER TABLE 你的表名 ALTER COLUMN infection_rate DECIMAL(18, 4); -- 保留4位小数足以展示3%左右的数值
注意操作前确认列中现有数据能兼容新类型,避免转换报错。
解决计算后结果全为0的问题
核心问题大概率是整数除法导致的取整:
- 若用
感染人数 / 总人数这类整数相除逻辑,数据库会默认返回整数结果,3%左右的小数会被直接取整为0。 - 修正方法是将其中一个运算数转为小数类型,强制触发浮点除法:
-- 方法1:显式转换其中一个数值为decimal SELECT CAST(感染人数 AS DECIMAL(18,4)) / 总人数 AS infection_rate FROM 你的表名; -- 方法2:用1.0相乘快速转为浮点型 SELECT 感染人数 * 1.0 / 总人数 AS infection_rate FROM 你的表名;
另外,确认infection_rate列的存储类型是带小数位的(比如DECIMAL(18,4)),避免存储时再次被取整。
内容的提问来源于stack exchange,提问作者Daniel Moc
相关产品推荐
相关产品推荐

