在oracle的聚合函数(sum、avg等)中使用NVL函数,强迫加入空值

简介: 前面我们在介绍oracle的聚合函数时提到如果在给定的值中存在空值的话,oracle将会忽略掉这些空值。这个处理的方式在大多数时候是符合我们要求的,但是在有些时候可能会有问题。 例如,现在到了年关,公司会对部分员工进行奖励,而当然会有一部分人没有得到奖励。

前面我们在介绍oracle的聚合函数时提到如果在给定的值中存在空值的话,oracle将会忽略掉这些空值。这个处理的方式在大多数时候是符合我们要求的,但是在有些时候可能会有问题。

例如,现在到了年关,公司会对部分员工进行奖励,而当然会有一部分人没有得到奖励。比如现在有一张表中存的是员工的奖金额,那个将会有一部分人对应的奖金额是空值,因为他们根本就没有得到奖励,现在老板让你统计全公司的得奖平均额。

如果你直接使用

Select avg(bonus) from emp;

得到的结果将会是那些得到奖励的人中的平均奖励额。

而老板要求的是统计出全公司所有员工的奖励平均额。

这是你应该使用NVL函数来把那些没有拿到奖励的员工也强行加入进来。

例如:

Select avg(NVL(bonus,0)) from emp;

在我们的scottschema里有一个表是emp,虽然里面没有奖金,但有另外一个column comm.,我们可以驾驶comm来表示奖金来测试一下

Select avg(comm) from emp; 得到

AVG(COMM)

———-

550

Select avg(NVL(comm,0)) from emp; 得到

AVG(NVL(COMM,0))

—————-

157.142857

这样就验证了刚才的说法。

目录
相关文章
|
27天前
|
SQL Oracle 算法
|
24天前
|
SQL Oracle 关系型数据库
|
29天前
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
28天前
|
Oracle 关系型数据库 数据挖掘
|
26天前
|
Oracle 关系型数据库 数据挖掘
|
3月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
93 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
2月前
|
存储 Oracle NoSQL
Oracle中decode函数详解
Oracle中decode函数详解
|
2月前
|
Oracle 关系型数据库 大数据
oracle递归函数
oracle递归函数
|
3月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
62 0
|
3月前
|
NoSQL Oracle 关系型数据库
MongoDB与Oracle:管道函数兼容之道
【4月更文挑战第20天】
30 2