我首先计算然后除以变量然后乘以100.例如,我的变量是16,total_count是15然后我期望看到93.75,即15/16 * 100。我的计算有些不对劲。
declare @myVar int
set @myVar = 16
select S.FAC_ID, NAME, COUNT(TTL_COUNT)/@myVar*100 AS FINAL_RESULT
from MYTABLE
GROUP BY S.FAC_ID, NAME
答案 0 :(得分:2)
将变量声明为float或具有小数点的其他类型。 SQL Server默认执行整数除法:
declare @myVar float;
set @myVar = 16;
select S.FAC_ID, NAME, COUNT(TTL_COUNT)/@myVar AS FINAL_RESULT
from MYTABLE
group by S.FAC_ID, NAME;
如果你想乘以100:
select S.FAC_ID, NAME, 100*COUNT(TTL_COUNT)/@myVar AS FINAL_RESULT
答案 1 :(得分:2)
COUNT(TTL_COUNT)*100/@myVar
这应该是正确的计算
正如所指出的,它应该是double或float
declare @myVar double
答案 2 :(得分:2)
您的可变数据类型错误。 试试这个:
declare @myVar decimal(28,2);
set @myVar = 16.00;
select S.FAC_ID, NAME
, ( COUNT( TTL_COUNT ) / @myVar ) * 100 AS FINAL_RESULT
from MYTABLE
group by S.FAC_ID, NAME
当您划分15/16
SQL Server(以及任何其他编程环境,这是一个数学规则)时,假设您期望得到integer
,它会解释您的0
。要获得小数结果,除数必须是浮点数。