求T-SQL适用的新增值占新总值5%的新增额计算公式
T-SQL 求解目标x值的实现方案
公式推导
根据需求可列如下等式,设起始值为@StartValue,目标值为x,要求x等于「起始值+x」总和的5%:
x = 0.05 * (@StartValue + x)
等式变形推导后可得到简化计算式:x = @StartValue * 0.05 / (1 - 0.05) = @StartValue / 19
你给出的示例代入验证:起始值380/19=20,x=20时占新总和(380+20)=400的5%,完全符合要求。
如果后续需要调整比例(比如改为8%、10%等),直接替换公式中的0.05为对应比例值即可。
T-SQL 实现代码
单值计算示例
DECLARE @StartValue DECIMAL(18,4) = 380; DECLARE @Ratio DECIMAL(18,4) = 0.05; -- 可按需修改比例 DECLARE @X DECIMAL(18,4); -- 核心计算逻辑 SET @X = @StartValue * @Ratio / (1 - @Ratio); -- 结果验证查询 SELECT @StartValue AS 起始值, @X AS 新增值X, @StartValue + @X AS 新总和, @X / (@StartValue + @X) AS X占新总和比例
表数据批量计算示例
如果需要对表中存储的批量起始值统一计算,直接在查询中嵌入公式即可:
SELECT 起始值字段 AS 起始值, 起始值字段 * 0.05 / 0.95 AS 新增值X, 起始值字段 + (起始值字段 * 0.05 / 0.95) AS 新总和 FROM 你的业务表名
注意事项
计算时建议使用精确数值类型(如DECIMAL),避免用FLOAT等浮点类型出现精度误差;如果起始值为整数且要求X返回整数,可按需套入ROUND/CEILING/FLOOR函数做取整处理。
内容的提问来源于stack exchange,提问作者UniMord
相关产品推荐
相关产品推荐

