sqlserver中的数学问题

sqlserver中的数学问题,sql,sql-server,tsql,math,Sql,Sql Server,Tsql,Math,我试图用SQL执行一个数学等式来计算服务启动时间。我有一列有通过计数,一列有失败计数 我在VB中为应用程序端实现了这个总和,总和如下:pass/(pass+fail)*100 结果应该在99.98的某些行上,但我无法让SQL给出相同的结果。我要么得到100,要么得到0 这是我的SQL查询: select pass / sum(pass+fail) * 100 as total, friendlyname from sensors group by pass, friendlyname 示例行:

我试图用SQL执行一个数学等式来计算服务启动时间。我有一列有通过计数,一列有失败计数

我在VB中为应用程序端实现了这个总和,总和如下:
pass/(pass+fail)*100

结果应该在99.98的某些行上,但我无法让SQL给出相同的结果。我要么得到100,要么得到0

这是我的SQL查询:

select pass / sum(pass+fail) * 100 as total, friendlyname from sensors group by pass, friendlyname
示例行:

Friendly Name  | Pass  | Fail
_____________________________

Cloudflare     | 25527 | 23 
如您所见,当使用上述公式在计算器上进行计算时,结果应为99.90,但SQL将此总和报告为0


真的很感谢你的帮助

将除法的至少一部分设为浮点数,以强制达到该精度。而且,你的数学似乎有问题。如果要计算通过/失败与总计数的比率,则总和应同时出现在分子和分母中

select
    100.0 * sum(pass) / sum(pass+fail) as pass_pct,
    100.0 * sum(fail) / sum(pass+fail) as fail_pct
    friendlyname
from sensors
group by
    friendlyname;

将除法的至少一部分设为浮点数,以强制达到该精度。而且,你的数学似乎有问题。如果要计算通过/失败与总计数的比率,则总和应同时出现在分子和分母中

select
    100.0 * sum(pass) / sum(pass+fail) as pass_pct,
    100.0 * sum(fail) / sum(pass+fail) as fail_pct
    friendlyname
from sensors
group by
    friendlyname;
试试这个:

select
    (pass * 100.0) / sum(pass+fail) as total,
    friendlyname
from sensors
group by friendlyname, pass
试试这个:

select
    (pass * 100.0) / sum(pass+fail) as total,
    friendlyname
from sensors
group by friendlyname, pass

试试
*100.0
,看看会发生什么。@jarlh-如果在除法之后发生,则很少发生。谢谢您的回复。我刚刚尝试了上面的方法,但现在显示为0.0和100.0,但仍然不正确。Thanks@Damien_The_Unbeliever是 啊我归咎于缺少咖啡。试试
*100.0
,看看会发生什么。@jarlh-如果在除法之后发生,那就很少了。谢谢你的回复。我刚刚尝试了上面的方法,但现在显示为0.0和100.0,但仍然不正确。Thanks@Damien_The_Unbeliever是 啊我怪咖啡太少了。试过这个就行了!非常感谢,这已经让我发疯好几天了!这可能不起作用,因为
pass
不出现在
groupby
子句中。请编辑您的问题并显示示例数据。是的,我在运行时必须添加密码。不过没什么大不了的!
pass
以按列分组的形式出现在sum调用中是没有意义的。只需尝试一下,它就可以工作了!非常感谢,这已经让我发疯好几天了!这可能不起作用,因为
pass
不出现在
groupby
子句中。请编辑您的问题并显示示例数据。是的,我在运行时必须添加密码。不过没什么大不了的!
pass
以按列分组的形式出现在sum调用中是没有意义的。