SQL 错误的百分比计算

Pat*_*921 2 sql t-sql sql-server

我目前正在编写一份小报告,我必须创建目标百分比的数字,但是我编写的查询似乎显示了错误的百分比计算,我不完全确定为什么。查询已删除所有敏感信息;

SELECT  YearMonth
, Code
, COUNT(*) AS Total
, (COUNT(*) / 100 * 2) AS 'Q1 Target'
, (COUNT(*) / 100 * 3) AS 'Q2 Target'
, (COUNT(*) / 100 * 4) AS 'Q3 Target'
, (COUNT(*) / 100 * 5) AS 'Q4 Target'
FROM xxx
LEFT JOIN Calendar AS C ON Date = xxx
WHERE code IN (xxx)
and xxx BETWEEN '20220301' AND '20220331'
GROUP BY YearMonth, code
Run Code Online (Sandbox Code Playgroud)

返回的结果是;

正如您所看到的,第一行总共有 611 个,其中 2% 是 12 个,这是正确的。但是,如果您查看第 3 行,您可以看到总数为 659,其中 2% 应为 13,但显示为 12。同样的情况也适用于下一列,其中 659 的 3% 应为 19,但实际为显示为 18。仅需要整数,因此无需进行转换。

有什么原因可以解释为什么会发生这种情况吗?

Geo*_*tis 5

仅需要整数,因此无需进行强制转换。

你确定吗?

659 / 100 整数除法的结果是 6 并丢弃余数。6*2=12。

将您的100s 更改为100.0s 以强制漂浮小数除法。之后您可能需要一些舍入/文本函数才能返回令人满意的两位数字。

  • 我对选择哪个词有点怀疑,但后来我想,“如果出现问题,Larnu 会掩盖我的踪迹”:) (2认同)