DB2查询某条件占比的SQL
今天为晨检脚本增加了记录记账成功率的功能,SQL的写法大致为:
select sum(case when 记账状态='记账成功' then 1 else 0 end)/cast(count(1) as decimal(18,2)) from 表 where 条件
这里有两个关键点:
- 使用case语句将符合条件的记录值变为1,其他值变为0,这样累加起来的值就是符合条件的记录数了。
- 在DB2中两个整数做除法,结果还会是一个整数。这时需要使用cast语句将其中一个整数转换为小数才能保留小数位。