分析函数:将集合进行分区(使用partition by),再计算这些分区的值,与分组函数最大的不同在于能够为每一个分区返回多行的值。
语法: function_name(<argument1>,<argument2>,...)
OVER
(<Partition-Clause><Order by - Cluase><Windowing Clause>)
其中,function_name : 用于指定分析函数名,Oracle提供了26个分析函数,比如 sum,count,avg,min, max, row_number等。
<argument> : 分析函数的参数
OVER :关键字,用于标识分析函数,否则查询分析器就不能区别,比如 sum 是分组函数还是一个分析函数。
<Partition-Clause> : 分区子句,可选,如果不存在任何分区子句,则全部的结果集可看作一个单一的大区。
<Order by-Clause> : 可选的排序子句,用来根据结果集进行排序。
<Windowing Clause> : 用于定义分析函数将在其上操作的行的集合。
当使用了 ORDER BY 子句后,ORacle将添加一个默认的开窗子句,这意味着计算中所使用的行的集合是当前分区中当前行和前面的所有行。
开窗子句 Windowing Clause必须定义在 Order By子句之后,用来定义一个变化或固定的数据窗口,分析函数将对这些数据进行操作。
eg : rows between unbounded preceding and unbounded following ,是Oracle提供的开窗子句,是指将计算第一条到最后一条的记录。