然后用sql中的变量除以计数
我试着先数数,然后除以变量,再乘以100。例如,我的变量是16,总计数是15,那么我希望看到93.75,也就是15/16*100。我的计算有些不对劲然后用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
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如果这解决了您的问题,请接受它作为答案。