全部统计并统计单个查询中符合子句的记录

时间:2018-11-14 11:46:34

标签: sql sql-server relational-database

我有一个看起来像这样的表:

A   B   C   December    February    January
100  ABC OL    100        290         200
100  DEF OL    260        360         300
200  ABC OL    500        550         600
200  DEF OL    570        680         600

我希望对表中的所有记录进行计数,然后将该数字除以NetAmount-PaymentAmount> 0的记录数。我该如何实现?

(这种情况下的结果为1/2 => 0.5)

3 个答案:

答案 0 :(得分:1)

最简单的方法是使用avg()

select avg(case when netamount > paymentamount then 1.0 else 0.0 end) as ratio
from t;

答案 1 :(得分:1)

您可以使用条件聚合:

SELECT 1.0 *
       COUNT(*) /
       COUNT(CASE WHEN NetAmount > PaymentAmount THEN 1 END)
FROM yourdata

1.0 *部分将确保您得到的小数点后的结果为0后面的1位数字。

答案 2 :(得分:0)

使用IIF条件:

SELECT AVG(IIF(NetAmount > PaymentAmount, 1.0, 0.0)) as Result
FROM tableName;