《Oracle Database编程指南》之15:聚合函数(Aggregate Functions)

Miette ·
更新时间:2024-11-01
· 694 次阅读

封面:扫描上图二维码关注课程

内容导航1、定义2、函数列表3、案例代码 1、定义

聚合函数(Aggregate Functions)根据行组而不是单行进行计算,并返回单个结果行,即Oracle将聚合函数应用于每组行,且每组行只执行一次计算并返回一个结果行。

聚合函数可以出现在SELECT列表中,也可以出现在ORDER BY和HAVING子句中,它们通常与SELECT语句中的GROUP BY子句一起使用,但这不是强制的。

首先,在SELECT语句中,Oracle数据库将查询的表或视图的行划分为组。

如果SELECT语句不包含GROUP BY子句,查询的结果集只有一个分组,Oracle将SELECT列表中的聚合函数应用于结果集中的所有行。

如果SELECT语句包含GROUP BY子句,那么Oracle将根据GROUP BY子句中的分组特性将结果集分为多个组,同时,SELECT列表的元素只能是聚合函数、GROUP BY表达式、常量或涉及其中一个的表达式。

我们也可以在SELECT语句的HAVING子句中使用聚合函数,根据聚合函数的结果(而不是根据查询的表或视图中各个行的值)从输出中删除组。

提示:

聚合函数总是作用于一组行,该组可能是数据集划分的许多组的其中之一,或者可能是整个表,不同的组包含不同数量的行,聚合函数对每个组都执行一次。 2、函数列表 常用聚合函数
AVG
MAX
MIN
SUM
COUNT

max(),min(),avg(),sum()分析那些存储静态数值型数据的列。

max(),min()函数可以分析任何数据类型的列。

除过count函数的count(*)形式外,这5个函数都可作用于非空值,即所有的聚合函数都忽略分组列或者表达式中包含空值的行。 其它聚合函数

APPROX_COUNT
APPROX_COUNT_DISTINCT
APPROX_COUNT_DISTINCT_AGG
APPROX_COUNT_DISTINCT_DETAIL
APPROX_MEDIAN
APPROX_PERCENTILE
APPROX_PERCENTILE_AGG
APPROX_PERCENTILE_DETAIL
APPROX_RANK
APPROX_SUM
COLLECT
CORR
CORR_*
COVAR_POP
COVAR_SAMP
CUME_DIST
DENSE_RANK
FIRST
GROUP_ID
GROUPING
GROUPING_ID
JSON_ARRAYAGG
JSON_OBJECTAGG
LAST
LISTAGG
MEDIAN
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
REGR_ (Linear Regression) Functions
STATS_BINOMIAL_TEST
STATS_CROSSTAB
STATS_F_TEST
STATS_KS_TEST
STATS_MODE
STATS_MW_TEST
STATS_ONE_WAY_ANOVA
STATS_T_TEST_*
STATS_WSR_TEST
STDDEV
STDDEV_POP
STDDEV_SAMP
SYS_OP_ZONE_ID
SYS_XMLAGG
TO_APPROX_COUNT_DISTINCT
TO_APPROX_PERCENTILE
VAR_POP
VAR_SAMP
VARIANCE
XMLAGG

3、案例代码 /* 作者:AT阿宝哥 日期:2016年9月18日 愿景:参考官方资料,做最好的课程,成就更多职业人! 邮箱:12264104@qq.com CSDN:https://blog.csdn.net/goldentec 简书:https://www.jianshu.com/u/8a6075d7a2e0 说明: 注意: */ ------------------------------------------------------------------------------- --Sample1:将整个结果集作为组. SELECT * FROM dept; SELECT COUNT(*) FROM dept; SELECT * FROM emp WHERE deptno = 30; SELECT COUNT(*) FROM emp WHERE deptno = 30; ------------------------------------------------------------------------------- --Sample2:通过公共分组特性集合将表分为多个组 SELECT deptno ,count(empno),sum(sal),avg(sal),MAX(sal),MIN(sal) FROM emp GROUP BY deptno;--此处写公共分组特性集合,至少一个; ------------------------------------------------------------------------------- --Sample3:特殊练习,计算所有员工的名称的平均长度,所有的小数部分必须舍入到最近的整数. SELECT round( AVG( LENGTH(ename) ) ) FROM emp; ------------------------------------------------------------------------------- /* 作者:AT阿宝哥 日期:2016年9月18日 愿景:参考官方资料,做最好的课程,成就更多职业人! 邮箱:12264104@qq.com CSDN:https://blog.csdn.net/goldentec 简书:https://www.jianshu.com/u/8a6075d7a2e0 说明: 注意: */ ------------------------------------------------------------------------------- --Sample1:Count(). --查询员工总数 SELECT count(*) FROM emp ;--统计结果集中所有行的数量. SELECT count(deptno) FROM emp ;--统计指定列中非Null值的数量. SELECT count(ename) FROM emp ;--统计指定列中非Null值的数量. ------------------------------------------------------------------------------- --Sample2:分析存储静态数值类型数据的列. --查询公司最低工资 SELECT min(sal) FROM emp ; --查询公司最高工资 SELECT max(sal) FROM emp ; --查询公司平均工资 SELECT avg(sal) FROM emp ; --查询公司待发工资数 SELECT sum(sal) FROM emp ; ------------------------------------------------------------------------------- --Sample3:max(),min()函数可以分析任何数据类型的列 SELECT max(ename),min(ename) from emp;--按照字母次序排列计算. ------------------------------------------------------------------------------- 查看专栏详情 立即解锁全部专栏
作者:AT阿宝哥



aggregate DATABASE 函数 聚合函数 Oracle

需要 登录 后方可回复, 如果你还没有账号请 注册新账号