分析函数详解

Introduction

Probably the easiest way to understand analytic functions is to start by looking at aggregate functions.

An aggregate function, as the name suggests, aggregates data from several rows into a single result row.

select avg(sal) from emp;

*统计函数:统计多行数据的信息到一行

The GROUP BY clause allows us to apply aggregate functions to subsets of rows.

select deptno,avg(sal) from emp group by deptno

*分组函数用于将分散的多行数据分为多个集合

*统计函数用于统计多行的数据到一行,它会减少返回的行数

Analytic functions also operate on subsets of rows, similar to aggregate functions in GROUP BY queries, but they do not reduce the number of rows returned by the query.

select empno,deptno,sal,avg(sal) over(partiton by deptno) as avg_dept_sal from emp;

*分析函数的作用类似于分组函数和统计函数的组合:

分析函数用于对分组后的数据进行统计;

不同于统计函数和分组函数的是,分析函数并不会减少返回的行数

分析函数不会减少返回的行数的原因是因为分析函数是在所有的join连接,where条件,group by操作和having条件全部执行完毕之后才会执行。

Analytic Function Syntax

There are some variations in the syntax of the individual analytic functions, but the basic syntax for an analytic function is as follows.

analytic_funceion ([arguments]) over (analytic_clause)

The analytic_clause breaks down into the following optional elements.

[ query_partition_clause ] [ order_by_clause [ windowing_clause ] ]

query_partition_clause

The query_partition_clause divides the result set into partitions, or groups, of data.

If the query_partition_clause is omitted, the whole result set is treated as a single partition.

select empno,deptno,sal,avg(sal) over() as avg_sal from emp;

select empno,deptno,sal,avg(sal) over(partition by deptno) as avg_dept_sal from emp;

*如果没有指定query_partition_clause选项,那么整个结果集只会被当做一个分区处理

order_by_clause

The order_by_clause is used to order rows, or siblings, within a partition.

select empno,deptno,sql,first_value(sal ignore nulls) over (partition by deptno order by sal asc nulls last) as first_val_in_dept from emp;

select empno,deptno,sal,first_value(sal ignore nulls) over (partition by deptno) as first_sal_in_dept from emp;

windowing_clause

The windowing_clause is an extension of the order_by_clause and as such, it can only be used if an order_by_clause is present.

The windowing_clause has two basic forms.

RANGE BETWEEN start_point AND end_point

ROWS BETWEEN start_point AND end_point

Possible values for "start_point" and "end_point" are:

UNBOUNDED PRECEDING : The window starts at the first row of the partition. Only available for start points.

UNBOUNDED FOLLOWING : The window ends at the last row of the partition. Only available for end points.

CURRENT ROW : The window starts or ends at the current row. Can be used as start or end point.

value_expr PRECEDING : A physical or logical offset before the current row using a constant or expression that evaluates to a positive numerical value. When used with RANGE, it can also be an interval literal if the order_by_clause uses a DATE column.

value_expr FOLLOWING : As above, but an offset after the current row.

*windowing_clause只有在order_by_clause出现的时候才能使用

Using Analytic Functions

AVG *

CLUSTER_DETAILS

CLUSTER_DISTANCE

CLUSTER_ID

CLUSTER_PROBABILITY

CLUSTER_SET

CORR *

COUNT *

COVAR_POP *

COVAR_SAMP *

CUME_DIST

DENSE_RANK

FEATURE_DETAILS

FEATURE_ID

FEATURE_SET

FEATURE_VALUE

FIRST

FIRST_VALUE *

LAG

LAST

LAST_VALUE *

LEAD

LISTAGG

MAX *

MIN *

NTH_VALUE *

NTILE

PERCENT_RANK

PERCENTILE_CONT

PERCENTILE_DISC

PREDICTION

PREDICTION_COST

PREDICTION_DETAILS

PREDICTION_PROBABILITY

PREDICTION_SET

RANK

RATIO_TO_REPORT

REGR_ (Linear Regression) Functions *

ROW_NUMBER

STDDEV *

STDDEV_POP *

STDDEV_SAMP *

SUM *

VAR_POP *

VAR_SAMP *

VARIANCE *

英文参考:http://oracle-base.com/articles/misc/analytic-functions.php

时间: 2024-10-20 20:48:41

分析函数详解的相关文章

常用Oracle分析函数详解

学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理代表了一个部门*/SELECT emp.full_name,       emp.salary,       emp.manager_id,       row_number() over(PARTITION BY emp.manager_id ORDER BY emp.salary DESC) row

oracle分析函数技术详解(配上开窗函数over())

一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数和聚合函数的不同之处是什么?普通的聚合函数用group by分组,每个分组返回一个统计值,而分析函数采用partition by分组,并且每组每行都可以返回一个统计值. 分析函数的形式分析函数带有一个开窗函数over(),包含三个分析子句:分组(partition by), 排序(or

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A

HttpServletResponse和HttpServletRequest详解

HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据.同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息.下表是接口HttpServletRequest的常用方法. 说明:HttpServ

POSIX 线程详解(经典必看)

总共三部分: 第一部分:POSIX 线程详解                                   Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  2000 年 7 月 01 日 第二部分:通用线程:POSIX 线程详解,第 2部分       Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  20

.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)

阅读目录: 1.环路执行对象模型.碎片化执行模型(假递归式调用) 2.N层对象执行模型(纵横向对比链式扩展方法) 3.LINQ查询表达式和链式查询方法其实都是空壳子 4.详细的对象结构图(对象的执行原理) 5.IQueryable<T>与IQueryProvider一对一的关系能否改成一对多的关系 6.完整的自定义查询 1]. 环路执行对象模型.碎片化执行模型(假递归式调用) 这个主题扯的可能有点远,但是它关系着整个LINQ框架的设计结构,至少在我还没有搞懂LINQ的本意之前,在我脑海里一直频

netstat状态详解

一.生产服务器netstat tcp连接状态................................................................................ 2 1.1生产服务器某个业务LVS负载均衡上连接状态数量............................................... 2 1.2生产服务器某个业务web上连接状态数量...............................................