ORACLE分析函数(2)
下面,我们来解析一下分析函数的语法格式(语法格式图请参照:http://blog.csdn.net/yidian815/article/details/12709223)。
函数名称
对it人士来时,再简单不过的东西了,不做描述。
函数参数:
分析函数通常会具有0-3个参数。
分区子句:
通过分区子句,可以对记录集进行分区,然后针对每个分区分别进行统计运算。在分析函数中,使用分区子句不必使用()将子句包围起来。在一个查询当中,我们可以使用多个分析函数,每个分析函数可以使用独立的分区规则。如果没有指定分区子句,则默认将整个查询结果作为一个分区。
示例:
没有指定分区子句:
SQL> select p.prod_subcategory_id,prod_list_price,sum(prod_list_price) over(order by prod_subcategory_id,prod_list_price range between 2 preceding and current row) fx from products p where p.prod_subcategory_id > 2053;select p.prod_subcategory_id,prod_list_price,sum(prod_list_price) over(order by prod_subcategory_id,prod_list_price range between 2 preceding and current row) fx from products p where p.prod_subcategory_id > 2053 *第 1 行出现错误:ORA-30486: 在窗口说明中无效的窗口合计组
对于range窗口范围,排序子句不可有多个字段。
窗口子句:
通过前面的描述,相信大家对窗口子句的作用和语法已有所了解。
另外,并不是所有分析函数都可以使用窗口子句,可以只有窗口子句的分析函数,在http://blog.csdn.net/yidian815/article/details/12709223可以查阅(具有*号)。
CURRENT ROW:该窗口从当前行开始(并结束)
Numeric Expression PRECEDING:对该窗口从当前行之前的数字表达式(Numeric Expression)的行开始,对RANGE来说,从从行序值小于数字表达式的当前行的值开始.
Numeric Expression FOLLOWING:该窗口在当前行Numeric Expression行之后的行终止(或开始),且从行序值大于当前行Numeric Expression行的范围开始(或终止)
range between 100 preceding and 100 following:当前行100前,当前后100后