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

server/2024/10/19 9:41:32/

      本文通过两种函数方法解决介绍了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.ppmy.cn/server/111446.html

相关文章

适用于 Visual Studio 的 C++ 万能头

您可以通过 star 我固定的 GitHub 存储库来支持我,谢谢!以下是我的一些 GitHub 存储库,很有可能对您有用: Proxy Everything - Open Source (PE-OS) QR Generator - Open Source (QG-OS) 用于在 Visual Studio 上预编译的 C 包含…

Datawhale X 李宏毅苹果书 AI夏令营 《深度学习详解》第一章 机器学习基础

机器学习,顾名思义,机器具备有学习的能力。具体来讲,机器学习就是让机器具备找一个函数的能力。随着要找的函数不同,机器学习有不同的类别: 回归(输出是一个数值,一个标量)分类&…

【论文阅读】通过使用实体增强框架融合多种多模态线索来改进假新闻检测

通过使用实体增强框架融合多种多模态线索来改进假新闻检测 Abstract 最近,带有文本和图像的假新闻比纯文本假新闻实现了更有效的传播,引发了多模态假新闻检测的严重问题。 目前关于这个问题的研究对开发多模态模型做出了重大贡献,但在充分建模多模态内容方面存在缺陷。 他…

访问Neo4j验证失败(The client is unauthorized due to authentication failure.)

使用Neo4j的过程中,可以打开页面,但是无法连通数据库。 在查看日志发现有下面的报错: 2018-12-18 05:30:34.693+0000 ERROR Unexpected error detected in bolt session 286ed4fffe88ed75-00016e40-00000001-8318869067983891-a1fb2d6d. The client is unauthorized due to …

合宙低功耗4G模组Air780EP——硬件设计02

Air780EP是一款基于移芯EC718P平台设计的LTECat1无线通信模组。 支持FDD-LTE/TDD-LTE的4G远距离无线 传输技术。 另外,模组提供了USB/UART/I2C等通用接口满足IoT行业的各种应用诉求。 在上文介绍了Air780EP的主要性能和应用接口中的管脚描述,电源供电&…

React中实现antd自定义图标,鼠标悬浮变色

借助 antd 的 tooltip 组件来实现 hover 时变色的效果 1.新建组件 自定义图标一般在iconfont上面获取,复制下来的svg代码,切记要删除 fill 属性后添加到组件中 import { Tooltip } from "antd"; import React from "react";const …

【图论简介】

图论简介 图论是一门数学分支,主要研究图(Graph)的性质、结构和应用。图论在计算机科学、网络理论、优化问题、生物信息学等多个领域都有广泛的应用。本文将简要介绍图论的基本概念、常见算法及其在实际中的应用。 一、图的基本概念 图&…

Kafka大厂面试14问(附答案)

怎么保证顺序消费? 同一个生产者发送到同一分区的消息,先发送的比后发送的offset要小。同一生产者发送到不同分区的消息,消息顺序无法保证。 怎么解决这个问题? 给一个topic只设置一个分区 相同key会发给一个分区 怎么保证幂…