资源描述:
《oracle 分析函数应用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Oracle分析函数2008.08.30WITHCONNECTBYSYS_CONNECT_BY_PATHGROUPINGSETSROLLUP(CUBE)OVERROW_NUMBERRANKDENSE_RANKPERCENT_RANK(CUME_DIST)FIRST_VALUE(LAST_VALUE)LAG(LEAD)MAX(MIN)AVG(SUM)RATIO_TO_REPORTOracle分析函数2008-08-302Oracle分析函数,在一般的应用系统开发时,使用较少,主要集中报表开发,数据仓库应用中;对于一些语句中使用分析函数,可以达到事半功倍的效果;Oracle的分析函数功
2、能强大,可以用于SQL的优化,往往用普通的SQL需要好几次表扫描的,用了分析函数后可以一句话解决;Oracle分析函数2008-08-303功能描述:用于一个语句中某些中间结果放在临时表空间的SQL语句,可以理解为定义一些sql的结果集为变量,然后直接引用.(只能使用在select语句中)语法:WITHsubquery_nameAS(theaggregationSQLstatement)SELECT(querynamingsubquery_name);例子:WITHaAS(SELECT*FROMscott.emp),bAS(SELECT*FROMscott.dept)SELECTa
3、.deptno,b.dname,a.empno,a.enameFROMa,bWHEREa.deptno=b.deptnoORDERBYa.deptno,a.empno;上面例子目的是取部门及其下属雇员资料WITH2008-08-304功能描述:树状查询语法:[STARTWITHcondition]CONNECTBYcondition例子:selectid,lpad(rightname,level*5+lengthb(rightname),'--'),rightname,parentidfroms_u_rightstartwithparentid='0'connectbypriori
4、d=parentid;CONNECTBY2008-08-305功能描述:实现将从父节点到当前行内容以“path”或者层次元素列表的形式显示出来语法:SYS_CONNECT_BY_PATH(column,char)例子:SELECTLPAD('',2*level-1)
5、
6、SYS_CONNECT_BY_PATH(last_name,'/')PathFROMemployeesSTARTWITHlast_name='Kochhar'CONNECTBYPRIORemployee_id=manager_id;SYS_CONNECT_BY_PATH6功能描述:分组自定义汇总语法:GROUPBYG
7、ROUPINGSETS((list),(list)...)例子:SELECTprod_id,cust_id,channel_id,SUM(quantity_sold)FROMsalesWHEREcust_id<80GROUPBYGROUPINGSETS((prod_id,cust_id,channel_id),(prod_id));GROUPINGSETS2008-08-307功能描述:分组小计及汇总语法:{ROLLUP
8、CUBE}(grouping_expression_list)例子:selectjob,deptno,sum(sal)total_salfromempgroupb
9、yrollup(job,deptno);ROLLUP(CUBE)2008-08-308功能描述:开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化例子:over(orderbysalary)按照salary排序进行累计,orderby是个默认的开窗函数over(partitionbydeptno)按照部门分区over(orderbysalaryrangebetween50precedingand150following)每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150over(orderbysalaryrowsbetween50p
10、recedingand150following)每行对应的数据窗口是之前50行,之后150行over(orderbysalaryrowsbetweenunboundedprecedingandunboundedfollowing)每行对应的数据窗口是从第一行到最后一行,等效:over(orderbysalaryrangebetweenunboundedprecedingandunboundedfollowing)OVER2008-08-309功能描述:返回有序组中一行