当前位置: 首页 > article >正文

Oracle查询预防解决分母为0的方法

      本文通过两种函数方法解决介绍了sql查询中分母为0的预防处理方法,主要采用decode函数或case when。在oracle数据查询中,常计算百分比,百分比分母又常通过子查询获得,常遇到业务数据暂时没有的时候,此时分母为0,因此sql语句在涉及到除法运算时应当提前预防和处理分母为0的情况。

一、decode函数

1、DECODE(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
......
ELSIF 条件=值n THEN
    RETURN(翻译值n)

ELSE
    RETURN(缺省值)
END IF

2、NVL函数

NVL(expr1,expr2)

含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

3、示例

如下想要实现计算  percent = done_num/all_num,避免all_num没有数据(select count()时得来),并区分实际计算结果为0 的情况,当没有数据时返回NULL。

借助NVL函数和DECODE函数。

select 100*nvl(TABLE2.done_num,0)/decode(TABLE1.all_num,0,null,TABLE1.all_num) as percent from TABLE1,TABLE2

二、case when 语句

1、case when函数

CASE WHEN '表达式1' THEN '结果1'

     WHEN '表达式2' THEN '结果2'

     WHEN '表达式3' THEN '结果3'

     ELSE '其他结果'

END

2、示例

如下想要实现计算  percent = done_num/all_num,避免all_num没有数据(select count()时得来),并区分实际计算结果为0 的情况,当没有数据时返回NULL。

select 100*IFNULL(TABLE2.done_num,0)/(CASE TABLE1.all_num
WHEN 0 THEN
NULL
ELSE
TABLE1.all_num
END
) as percent from TABLE1,TABLE2


http://www.kler.cn/news/288677.html

相关文章:

  • 防御网站数据爬取:策略与实践
  • 基于FPGA实现SD NAND FLASH的SPI协议读写
  • 棋类游戏定制开发:步骤详解
  • ET6框架(七)Excel配置工具
  • 【数论 状态机dp】2572. 无平方子集计数
  • c++懒汉式单例模式(Singleton)多种实现方式及最优比较
  • laravel8快速开发简单博客系统(二)
  • HarmonyOS NEXT实战:“相机分段式拍照”性能提升实践
  • 深度学习100问11:什么是one-hot编码
  • Anaconda安装和环境配置教程(深度学习准备)
  • 用SQL语句 对时间进行周期计算week(date,mode)
  • SAP B1 三大基本表单标准功能介绍-物料主数据(下)
  • ClickHouse实时探索与实践 京东云
  • 使用LLaMA-Factory快速训练自己的专用大模型
  • 空间计量 | 似不相关回归SUR
  • k8s的Service和持久化存储
  • B端系统门门清之:CRM-客户管理系统,客户是一切的源头。
  • 动态规划---分割等和子集
  • 8.30-使用docker容器部署考试项目+使用Dockerfile部署java项目
  • 视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据...
  • (十五)SpringCloudAlibaba-Sentinel持久化到Nacos
  • python图像处理基础(skimage、PIL、OpenCV)
  • Java设计模式之建造者模式详细讲解和案例示范
  • JVM面试(二)内存区域划分
  • 无人机专业大学生参与无人机飞手执照培训技术分析
  • 【CPP 基础】如何把cpp库,分装给 c# 用。
  • 数据结构---线性表--栈和队列
  • ActiveMQ实战指南:实现发布/订阅(publish-subscribe)消息发送!
  • Unity Android 进阶之 【Android 添加一个启动动画】在Unity场景加载完之前,避免 【Unity 启动界面慢 黑屏时间长】的情况
  • 青远生态为云南林业规划院定制开发的自然保护地规划智能编制系统顺利通过验收