暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL中如何处理除数为0的情况?

数据森麟 2021-08-19
1589


公众号后台回复“图书“,了解更多号主新书内容

     作者:平凡世界

     来源:  SQL数据库开发

问题
我们在进行数据统计的时候,经常会遇到求百分比,环比,同比等这些需要除以某个数的情况,而如果除数为0,数据库是会报错的。

那么遇到这样的情况我们怎么处理呢?下面我们用示例给大家讲解一下处理方法。

解决办法
情况一
例如  
    SELECT  A/B  FROM TAB
    遇到这样的情况,一般的处理方法是用CASE WHEN来判断B的值
      SELECT 
      CASE WHEN B=0 THEN 0 ELSE A/B END
      FROM TAB
      这样当B如果是0,我们直接赋一个值,避免A/B参与计算报错。

      情况二
      上面是一种常见的情况,但是如果遇到下面这样的聚合函数呢?
      例如
        SELECT  SUM(A)/COUNT(B) FROM TAB
        遇到这样的情况CASE WHEN 是不能判断COUNT(B)的值的,因为WHEN后面的条件不能使用聚合函数(语法要求),这个时候我们可以这样处理
          SELECT  
          ISNULL(SUM(A)/NULLIF(COUNT(B),0),0)
          FROM TAB
          其中这里使用了两个函数,NULLIF()和ISNULL() NULLIF函数有两个参数,定义如下:
          NULLIF( expression1 , expression2 )
          其作用就是:如果两个指定的表达式相等,就返回NULL值。

          ISNULL函数也有两个参数,定义如下:
          ISNULL( expression1 , expression2 )
          其作用是:如果第一个参数的结果为NULL,就返回第二个参数的值。

          当COUNT(B)的结果为0时,恰好与第二个给定的参数0相等,这个时候NULLIF函数就会返回NULL,而SUM(A)在除以NULL时结果为NULL,外层使用ISNULL函数再对NULL值进行判断,这样最终结果就是0了。

          这两种方法就是我们日常处理除数为0的情况了,一定要记得哦~

          ◆ ◆ ◆  ◆ 

          麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:





          数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。


          管理员二维码:

          猜你喜欢

           !原来爬取B站弹幕这么简单

           厉害了!麟哥新书登顶京东销量排行榜!

           笑死人不偿命的知乎沙雕问题排行榜

           用Python扒出B站那些“惊为天人”的阿婆主!

           你相信逛B站也能学编程吗


          文章转载自数据森麟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论