我有一个看起来像这样的表:
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)
答案 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;