oracle数据库之聚合函数与空值

我们知道,在很多情况下表中的某些字段是允许为null的,并且有时候是不得不需要关注null的,例如在实际的需求中会有类似的需求:涉及null数据视为无效,此时我们就需要将含有null的数据进行筛选并剔除,最后展示出我们想要的有效数据即可。

下面先实现一个小需求:查询employees表中所有数据
在这里插入图片描述
这是employees表的表结构。

实现需求:

select e.* from employees e 

结果:
在这里插入图片描述

以上就是该表中的所有数据内容,但是可以看出commission字段很多为null。
那么现在我么可以将需求改变一下,查看所有有津贴的员工信息
此时sql可以写成:

select e.* from employees e where e.commission is not null;

在这里插入图片描述
可以看出,此时出来的是全部有津贴的员工信息。

此时应该考虑一下,既然是查询有津贴的员工信息,那么我们可以不可在where字句中将
e.commission is not null 写成e.commission != null呢?

我们可以看一下执行结果:
在这里插入图片描述
可以看出:并没有报错,但是也并没有结果输出出来,这是因为空值并不能进行比较,如果这样这样做了,返回值姜还是控制

oracle中的常用聚合函数:

sum函数:计算总和
avg:计算平均值
min:计算最小值
max:计算最大值
count函数:计算数据条数

聚合函数的使用:

需求使用聚合函数计算出员工津贴的总值,平均值,最小值,最大值,和字段数

SELECT SUM(e.commission) '津贴总值',
AVG(e.commission) '津贴均值',
MIN(e.commission) '最小津贴值',
MAX(e.commission) '最大津贴值',
COUNT(e.commission) '津贴字段数量'
from employees e;

在这里插入图片描述
这里可以看出空值是被自动忽略了。

这里指的注意的是,我在使用count函数的时候用的是具体的字段,那么我用*会是什么结果呢?

在这里插入图片描述
可以看到,这里津贴字段有13条数据,结合上面查看去全表数据,全表确实有13条数据。

那么这里我们可以得出结论:在使用AVG、SUM、MIN、MAX、COUNT聚合函数时,当时用一个列名计算的时候空值会被自动去掉,特别的,当使用COUNT函数使用常量例如(*或1)时,空值不会被自动去掉。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值