【发布时间】:2015-04-16 19:20:29
【问题描述】:
我有一个看似简单的问题。我只想显示没有小数位的百分比,并且总加起来为 100。这里有一个小片段:
create table genderTable
(person varchar(10),
isMale varchar(5))
insert into genderTable values ('Mary', 'false')
insert into genderTable values ('Frank', 'true')
insert into genderTable values ('Bill', 'true')
insert into genderTable values ('Jessie', 'false')
insert into genderTable values ('Sue', 'false')
insert into genderTable values ('Beth', 'false')
insert into genderTable values ('Kris', 'false')
declare @total as int
set @total = 7
select
CASE isMale
WHEN 'True' THEN 'Male'
ELSE 'Female'
END as Gender,
CASE
WHEN @total > 0 THEN ROUND((count(isMale) * 100 / @total), 0)
ELSE 0
END as GenderPercent
from genderTable
group by isMale
总数加起来是 99%,而不是 100%。我尝试了各种四舍五入,但我要么得到一位小数,要么得到 99%。有什么帮助吗?请记住,在另一个例子中,我必须对有两个以上值的种族做同样的事情,所以从 100 中减去可能是行不通的......
【问题讨论】:
-
从数学上讲,你不能指望这样做。想象一下,你有 2.5、2.5。您永远不会得到加起来为 5 的整数。四舍五入时会发生这种情况。
-
加起来然后四舍五入,也许吧?
标签: sql sql-server tsql rounding