SQL在数据处理过程中,遇到除数为0该怎么办?

阅读: 评论:0

SQL在数据处理过程中,遇到除数为0该怎么办?

SQL在数据处理过程中,遇到除数为0该怎么办?

点击上方SQL数据库开发,关注获取SQL视频教程

SQL专栏

SQL数据库基础知识汇总

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

更多推荐 最常问的MySQL面试题集合 MySQL:缓存算什么东西?! 醒醒吧!又一个程序员在东南亚出事了...        

公众号内回复1,拉你进微信交流群

长按下方二维码加入,我们的SQL训练营

点击"阅读原文",了解SQL训练营

本文发布于:2024-01-28 00:54:48,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063744883674.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据处理   数为   过程中   SQL
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23