今天在做项目的时候需要计算满意度的和点击次数显示在页面上:
其中满意度的计算方法为:总的评价分数/总的评价人数
然后我开始写的查询语句为:
select doctorid , sum(gradescore) /sum(isgrade) satis from jkmh_webcms.tcm_consult group by doctorid
除数为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
sum(case when isgrade = '0' then '1' else null end)
希望大家以后在做除法的时候留心判断一下分母的条件,表像我一样粗心,哈哈