有段sql,求达成率(实际/目标)怎么写

select  TIMESTAMPADD(HOUR, 8, rq) 日期,org3  三级组织,

org4  四级组织,zgh  工号,zname  姓名,sum(mb) 目标,sum(ce) ce,sum(hsje)   实际

 from xsyj

 where  HOUR  between    '开始时间'   and   ’结束时间'

 group by yyyy,ym,rq,org3,org4,zgh,zname

 order by rq 

企业微信截图_16635643341358.png

SQL 十万个小问题 发布于 2022-9-19 13:16
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
MJ2024Lv6见习互助
发布于2022-9-19 14:17

select  TIMESTAMPADD(HOUR, 8, rq) 日期,org3  三级组织,

org4  四级组织,zgh  工号,zname  姓名,sum(mb) 目标,sum(ce) ce,sum(hsje)   实际,if(sum(mb)=0,0,sum(hsje)/sum(mb)) 实际达成率

 from xsyj

 where  HOUR  between    '开始时间'   and   ’结束时间'

 group by yyyy,ym,rq,org3,org4,zgh,zname

 order by rq 

问sql问题的时候我建议最好指明说哪个数据库比较好,一些函数并不通用,在这里我指出的一点就是被除数为0必须要考虑进去,因为如果当前数据没有0刚好执行成功,若有一天有0数据则就报错,应当规避

最佳回答
0
snrtuemcLv8专家互助
发布于2022-9-19 13:37

最简单是

select *,实际/目标 达成率 from

(select  TIMESTAMPADD(HOUR, 8, rq) 日期,org3  三级组织,

org4  四级组织,zgh  工号,zname  姓名,sum(mb) 目标,sum(ce) ce,sum(hsje)   实际

 from xsyj

 where  HOUR  between    '开始时间'   and   ’结束时间'

 group by yyyy,ym,rq,org3,org4,zgh,zname

 order by rq )

  • MJ2024 MJ2024 需要考虑被除数为0的问题
    2022-09-19 14:17 
最佳回答
0
yzm339714Lv6中级互助
发布于2022-9-19 14:22(编辑于 2022-9-19 14:22)

select *,( case when 目标 = 0 then 0 else  实际/目标 end)  as 达成率 from

(select  TIMESTAMPADD(HOUR, 8, rq) 日期,org3  三级组织,

org4  四级组织,zgh  工号,zname  姓名,sum(mb) 目标,sum(ce) ce,sum(hsje)   实际

 from xsyj

 where  HOUR  between    '开始时间'   and   ’结束时间'

 group by yyyy,ym,rq,org3,org4,zgh,zname

 ) a order by rq

case when 的话基本上数据库都可以用把

  • 4关注人数
  • 362浏览人数
  • 最后回答于:2022-9-19 14:22
    请选择关闭问题的原因
    确定 取消
    返回顶部