前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >SQL中除数为0处理情况演示

SQL中除数为0处理情况演示

原创
作者头像
用户8989785
修改2021-09-13 11:45:09
修改2021-09-13 11:45:09
1.3K00
代码可运行
举报
文章被收录于专栏:网站技术分享网站技术分享
运行总次数:0
代码可运行

我们在进行数据统计的时候,经常会遇到求百分比,环比,同比等这些需要除以某个数的情况,而如果除数为0,数据库是会报错的。那么遇到这样的情况我们怎么处理呢?下面我们用示例给大家讲解一下处理方法。


情况一

例如

代码语言:javascript
代码运行次数:0
复制
SELECT  A/B  FROM TAB

遇到这样的情况,一般的处理方法是用CASE WHEN来判断B的值

代码语言:javascript
代码运行次数:0
复制
SELECT  
CASE WHEN B=0 THEN 0 ELSE A/B END   
FROM TAB 

这样当B如果是0,我们直接赋一个值,避免A/B参与计算报错。

情况二

上面是一种常见的情况,但是如果遇到下面这样的聚合函数呢?

例如

代码语言:javascript
代码运行次数:0
复制
SELECT  SUM(A)/COUNT(B) FROM TAB

遇到这样的情况CASE WHEN 是不能判断COUNT(B)的值的,因为WHEN后面的条件不能使用聚合函数(语法要求),这个时候我们可以这样处理

代码语言:javascript
代码运行次数:0
复制
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的情况了,一定要记得哦!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档