频道栏目
首页 > 资讯 > Oracle > 正文

ORACLE官方SQL语言参考之聚合函数实例讲解

18-06-12        来源:[db:作者]  
收藏   我要投稿

聚合函数

聚合函数基于行组 (而不是单行) 返回单个结果行。聚合函数可以出现在选择列表中, 按ORDERBY显示和HAVING子句。它们通常与SELECT语句中的GROUPBY子句一起使用, 其中 Oracle 数据库将查询的表或视图的行划分为组。在包含GROUPBY子句的查询中, 选择列表的元素可以是聚合函数、BY表达式GROUP、常量或包含其中之一的表达式。Oracle 将聚合函数应用于每一组行, 并为每个组返回单个结果行。

如果省略GROUPBY子句, 则 Oracle 将 select 列表中的聚合函数应用于查询的表或视图中的所有行。在HAVING子句中使用聚合函数, 可以基于聚合函数的结果 (而不是查询的表或视图的各个行的值) 从输出中消除组。

另请参见:

"使用 group by 子句: 示例"和"having 子句", 了解有关GROUPBY子句的更多信息, 并在查询和子查询中HAVING子句

具有单个参数的许多 (但并非全部) 聚合函数接受这些子句:

DISTINCT的和UNIQUE的, 这是同义词, 导致聚合函数只考虑参数表达式的不同值。本章中聚合函数的语法图使用了DISTINCT于简单性的关键字。

ALL导致聚合函数考虑所有值, 包括所有重复项。

例如, 1、1、1和3的DISTINCT平均值为2。平均值ALL为1.5。如果不指定, 则默认值为ALL.

某些聚合函数允许windowing_clause, 它是解析函数语法的一部分。有关此子句的信息, 请参阅windowing_clause。在本节末尾的聚合函数列表中, 允许windowing_clause的函数后跟星号 (*)

除COUNT(*)、GROUPING和GROUPING_ID之外的所有聚合函数都忽略 null。可以将参数中的NVL函数用于聚合函数以替换 null 值。COUNT和REGR_COUNT从不返回 null, 但返回一个数字或零。对于所有剩余的聚合函数, 如果数据集不包含行, 或者只包含具有 null 的行作为聚合函数的参数, 则该函数返回 null。

聚合函数MIN、MAX、SUM、AVG、COUNT、VARIANCE和STDDEV, 后跟KEEP关键字时, 可以与FIRST或LAST一个函数来对一组值进行操作, 这些行在对给定的排序规范进行排序时是FIRST个或LAST一个。有关详细信息, 请参阅第一个。

可以嵌套聚合函数。例如, 下面的示例计算示例架构hr中所有部门的最高工资平均数。:

SELECT AVG(MAX(salary))

FROM employees

GROUP BY department_id;

AVG(MAX(SALARY))

----------------

10926.3333

此计算评估由GROUPBYby 子句 (department_id) 定义的每个组的内部聚合 (MAX(salary)), 并再次聚合结果。

在下面的聚合函数列表中, 后跟星号 (*) 的函数允许windowing_clause.

AVG

COLLECT

CORR

CORR_*

COUNT

COVAR_POP

COVAR_SAMP

CUME_DIST

DENSE_RANK

FIRST

GROUP_ID

GROUPING

GROUPING_ID

LAST

LISTAGG

MAX

MEDIAN

MIN

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

SUM

SYS_XMLAGG

VAR_POP

VAR_SAMP

VARIANCE

XMLAGG

相关TAG标签
上一篇:mysql-5.7.22-winx64.zip的下载安装及配置教程
下一篇:SQLServer属性集的闭包,最小函数依赖集等题目讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站