SQL A 列占 B 列的百分比

SQL percentage of column A over column B

好的,所以我有这个 SQL 查询,行数和计数失败,如下例所示。

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

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

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

就这么简单

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

如果任一列中没有小数部分,则明确将其转换为 decimal/float 值以避免整数除法

使用NULLIF避免被零除错误

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

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只是因为如果操作数都是整数,有些数据库会进行整数除法;有些则不会。)

如果SQL服务器

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