阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

29次阅读
没有评论

共计 785 个字符,预计需要花费 2 分钟才能阅读完成。

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

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 的情况了,一定要记得哦!

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计785字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中