Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
然后用sql中的变量除以计数_Sql_Sql Server_Tsql - Fatal编程技术网

然后用sql中的变量除以计数

然后用sql中的变量除以计数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试着先数数,然后除以变量,再乘以100。例如,我的变量是16,总计数是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 将变量声明为浮点型或其他带小数点的类型。默认情况下,S

我试着先数数,然后除以变量,再乘以100。例如,我的变量是16,总计数是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

将变量声明为浮点型或其他带小数点的类型。默认情况下,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

将变量声明为浮点型或其他带小数点的类型。默认情况下,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
这应该是正确的计算

正如所指出的,它应该是双精度的或浮动的

declare @myVar double
这应该是正确的计算

正如所指出的,它应该是双精度的或浮动的

declare @myVar double

您的变量数据类型错误。 试试这个:

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(以及任何其他编程环境,这是一个数学规则)除法时,假设您期望的结果是
整数,它解释了
0
。要获得十进制结果,除数必须是浮点。

变量数据类型错误。 试试这个:

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(以及任何其他编程环境,这是一个数学规则)除法时,假设您期望的结果是
整数,它解释了
0
。要得到十进制结果,您的除数必须是浮点。

我知道您期望的是93.75,但是您得到的值是多少?它可能看起来有点愚蠢,但是,您没有除以100。。。你需要这个
(COUNT(TIL_COUNT))/@MyVar)/100
对不起,我本来想乘以100,我刚刚更新了我的帖子。请原谅我亲爱的Sally阿姨。@JackMarchetti PEMDAS在这里适用吗?SQL不是从左到右运行吗,即15/16=.9375*100=93.75?我知道您期望的是93.75,但是您得到的值是多少?它可能看起来有点愚蠢,但是,您没有除以100。。。你需要这个
(COUNT(TIL_COUNT))/@MyVar)/100
对不起,我本来想乘以100,我刚刚更新了我的帖子。请原谅我亲爱的Sally阿姨。@JackMarchetti PEMDAS在这里适用吗?SQL不是从左到右运行吗,即15/16=.9375*100=93.75?@moe如果这解决了您的问题,请接受它作为答案。@moe如果这解决了您的问题,请接受它作为答案。