Oracle分组函数

分组函数简单的说就是一个函数作用于一组数据,并对这组数据进行处理然后返回一个结果值。比如求平均数或者求和就可以用到分组函数求值。常用的分组函数有五个:平均值(AVG)、个数(COUNT)、总和(SUM)、最大值(MAX)、最小值(MIN)。

EMPLOYEES表

 

一、组函数

    EMPLOYEES表中有记录工资(SALARY)的列。对于工资,也可以说是对于数字,就会有对数字的计算,这时候就可以用到组函数来进行计算。

    这里的工资就可以把全部的组函数都用上。但是需要注意的是组函数所操作的数据是不包括空值的,EMPLOYEES表中的佣金(COMMISSION_PCT)就有空值的数据,下面就用佣金的空值来说明这个问题。

平均值的计算就是先把要求的值求和之后再除以该值的总数。在EMPLOYEES表中有107条数据,这里的求平均值就只用35条数据,也就是佣金不为空值的数据来进行计算,结果与用AVG分组函数一样。说明组函数所操作的数据是不包括空值的。

 

对于这种情况就要用上通用函数的NVL来将空值转换成一个指定的值。这样就可以用所有人的工资来计算平均值,包括空值那部分。同时用分组函数时要注意对应数据类型。

 

二、分组(GROUP BY)

    分组函数顾名思义就是用来分组的,这五个常用的分组函数返回的都是一个值,要想达到分组的效果还需要用到GROUP BY子句。使用GROUP BY子句是有前提的,即在SELECT子句中要含有分组函数,同时在SELECT列表中所有未包含在组函数中的列都应该包含在GROUP BY子句中(如下左图),而包含在 GROUP BY 子句中的列可以不必包含在SELECT列表中(如下右图)。

 

三、过滤(HAVING)

    分组完成之后就是对数据的过滤,SELECT子句用上的分组函数是无法通过WHERE子句来进行过滤的。这时候就需要用到HAVING子句,使用HAVING过滤分组的前提是数据已经被分过组且用上了分组函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值