列B上的列A的SQL百分比

时间:2017-02-03 15:06:21

标签: sql percentage

好的,所以我有这个带有rowcount和count的SQL查询失败,就像下面的例子一样。

|CountFound|CountFailed|
|----------|-----------|
|   6510   |    979    |

问题是,如何进行查询以显示百分比(%)失败。像下面的例子..

|CountFound|CountFailed|PercentageFailed|
|----------|-----------|----------------|
|   6510   |    979    |       15.03%   |

3 个答案:

答案 0 :(得分:2)

这很简单

select (CountFailed * 1.0 / NULLIF(CountFound,0)) * 100
From yourtable

如果列中的任何一列没有小数部分,则显式将其转换为十进制/浮点值以避免整数除法

使用NULLIF来避免除以零错误

答案 1 :(得分:1)

我认为你可以用一种非常独立于数据库的方式做你想做的事情:

select concat(cast(cast(CountFailed * 1.0 / nullif(CountFound, 0) as decimal(5, 2)) as varchar(255)), '%') as PercentageFailed
from t;

当然,我会这样做:

select CountFailed * 1.0 / nullif(CountFound, 0)

我认为没有理由将此格式设置为数据库输出的百分比。

* 1.0只是因为如果操作数都是整数,一些数据库会进行整数除法;有些则不是。)

答案 2 :(得分:1)

如果SQL Server

Select CountFound
      ,CountFailed
      ,PercentageFailed = Format((CountFailed*1.0)/NULLIF(CountFound,0),'0.00%')
 From  YourTable