资源描述:
《ORACLEOLAP函数语法的总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ORACLEOLAP函数语法的总结ORACLEOLAP函数语法的总结2006-08-1214:35语法:FUNCTION_NAME(,,...) OVER ()OLAP函数语法四个部分:1、function本身用于对窗口中的数据进行操作;2、partitioningclause用于将结果集分区;3、orderbyclause用于对分区中的数据进行排序;4、windowingclause用于定义function在其上操作的行的集合,即function所影响的范围。一、orderby对窗口的影响不含orderby
2、的:SQL>selectdeptno,sal,sum(sal)over() fromemp;不含orderby时,默认的窗口是从结果集的第一行直到末尾。含orderby的:SQL>selectdeptno,sal,sum(sal)over(orderbydeptno)assumsal fromemp;当含有orderby时,默认的窗口是从第一行直到当前分组的最后一行。二、用于排列的函数SQL>selectempno,deptno,sal, rank()over (partitionbydeptnoorderbysald
3、escnullslast)asrank, dense_rank()over (partitionbydeptnoorderbysaldescnullslast)asdense_rank, row_number()over (partitionbydeptnoorderbysaldescnullslast)asrow_number from emp;三、用于合计的函数SQL>selectdeptno,sal, 2 sum(sal)over(partitionbydeptno)assum
4、sal, 3 avg(sal)over(partitionbydeptno)asavgsal, 4 count(*)over(partitionbydeptno)ascount, 5 max(sal)over(partitionbydeptno)asmaxsal 6 fromemp;四、开窗语句 1、rows窗口:"rows5preceding" 适用于任何类型而且可以orderby多列。 SQL>selectdeptno,ename,sal,
5、 2 sum(sal)over(orderbydeptnorows2preceding)sumsal 3 fromemp;rows2preceding:将当前行和它前面的两行划为一个窗口,因此sum函数就作用在这三行上面SQL>selectdeptno,ename,sal, sum(sal)over (partitionbydeptnoorderbyenamerows2preceding)sumsal fromemp orderbydeptno,e
6、name;加了partitonby分区后之后,rows2preceding(窗口)只在当前分区内生效,不会影响分区之外的行。SQL>selectename,sal,hiredate, first_value(ename)over (orderbyhiredateascrows5preceding)first_ename, first_value(hiredate)over (orderbyhiredateascrows5preceding)first_hiredate
7、 fromemp orderbyhiredateasc;orderbyhiredateascrows5preceding:orderby之后,取当前行的前5行+当前行作为窗口(共6行)。2、"rangeunboundedpreceding"rangeunboundedpreceding会把当前行之前的所有行都包含进来,但当partitionby时:SQL>selectdeptno,ename,sal, sum(sal)over (partitionbydeptnoorderbydeptnorang
8、eunboundedpreceding)sumsal fromemp;SQL>selectdeptno,ename,sal, sum(sal)over (orderbydeptnorangeunboundedpr