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

SQLite Studio中两数值列除法结果全为0的问题求助

整数除法导致SQL计算致死率结果为0的解决办法

问题出在整数除法的截断特性:当total_deaths和total_cases都是整数类型时,SQL会执行整数除法——直接舍弃小数部分,只保留整数结果。比如5/100会得到0,再乘以100自然还是0。而乘法运算不会触发这个问题,因为整数相乘仍为整数,结果正常。

修复方案

有两种常用方式避免整数截断:

  1. 用浮点常量强制转换运算类型
select location, date, total_cases, total_deaths, 
  (total_deaths * 1.0 / total_cases) * 100 as DeathPercentage
from MyNewDB.CovidDeaths
order by location, date;

给其中一个数值乘以1.0,会让整个运算转为浮点型,保留小数部分。

  1. 显式转换字段类型
    用CAST函数把整数字段转为浮点型:
select location, date, total_cases, total_deaths, 
  (CAST(total_deaths AS FLOAT) / total_cases) * 100 as DeathPercentage
from MyNewDB.CovidDeaths
order by location, date;

为什么其他数据库正常?

不同数据库对整数除法的默认行为不同,部分数据库会自动将整数除法升级为浮点运算,而当前数据库严格遵循整数除法规则,所以出现差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:52:06