聚合函数(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、函数列表 常用聚合函数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
/*
作者: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;--按照字母次序排列计算.
-------------------------------------------------------------------------------
查看专栏详情
立即解锁全部专栏