count然后除以sql中的变量

时间:2013-12-20 01:49:56

标签: sql sql-server tsql

我首先计算然后除以变量然后乘以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

3 个答案:

答案 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。要获得小数结果,除数必须是浮点数。