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

SQL Server中如何计算百分比?除法操作无结果问题求助

在SQL Server中计算百分比的解决方案

首先看你提供的执行截图:
SQL执行截图

你的问题和Modulo(取模,%运算符)无关,核心原因是SQL Server中整数之间的除法会自动取整为整数。比如如果分子小于分母,直接执行除法得到的结果是0,而非预期的小数,这就会让你误以为没有得到结果。

解决这个问题的关键是让除法运算返回小数结果,再乘以100得到百分比,具体有几种常用方法:

  • 方法1:将其中一个操作数转换为浮点/十进制类型
    通过CAST或CONVERT把分子或分母转为非整数类型,触发浮点除法:
-- 转换分子为DECIMAL类型,保留两位小数
SELECT (CAST(已完成数 AS DECIMAL(18,2)) / 总数) * 100 AS 完成百分比
-- 转换分母为FLOAT类型
SELECT (已完成数 / CAST(总数 AS FLOAT)) * 100 AS 完成百分比
  • 方法2:用数值常量强制转换
    给其中一个数乘以1.0(浮点常量),自动将整个表达式转为浮点运算:
SELECT (已完成数 * 1.0 / 总数) * 100 AS 完成百分比
  • 方法3:处理分母为0的异常情况
    如果分母可能为0,直接除法会报错,用NULLIF把0转为NULL,再用ISNULL设置默认值:
-- 分母为0时返回NULL
SELECT (已完成数 * 1.0 / NULLIF(总数, 0)) * 100 AS 完成百分比
-- 分母为0时返回0
SELECT ISNULL((已完成数 * 1.0 / NULLIF(总数, 0)) * 100, 0) AS 完成百分比

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:17:03