在sql中遇到除数为0的错误时候的解决办法

今天在做项目的时候需要计算满意度的和点击次数显示在页面上:


其中满意度的计算方法为:总的评价分数/总的评价人数

然后我开始写的查询语句为:

select doctorid , sum(gradescore)  /sum(isgrade)  satis from jkmh_webcms.tcm_consult group by doctorid 

但是在plsql运行的时候报错了:


除数为0意思就是sum(isgrade)计算的值有为0的即分母为0就会报错

然后我就做了如下修改:

select doctorid , sum(gradescore)  /sum(case when isgrade = '0' then '1' else '0' end)satis from jkmh_webcms.tcm_consult group by doctorid 

对分母做了一下判断:

sum(case when isgrade = '0' then '1' else '0' end)的意思就是当isgrade=0即评价了医生的话就按1计算,否则isgrade=1没有评价的话就按0计算

继续在plsql运行没想到还是报错:除数为0

我一想当没有人评价医生的话都是按0计算,当然计算的值的总的值还是为0了,所以我就又做了下面的改变:

select doctorid , sum(gradescore) /sum(case when isgrade = '0' then '1' else null end)satis from jkmh_webcms.tcm_consult group by doctorid 

这个下就运行成功了,大家可以看出我把当遇到0的情况转返回了null这下就可以计算了,至于为什么改成null就可以计算了,我也不知道,哎。。。。。。
sum(case when isgrade = '0' then '1' else null end)

希望大家以后在做除法的时候留心判断一下分母的条件,表像我一样粗心,哈哈

你可能感兴趣的:(sql,plsql,select)