資源描述:
《oracle 分析函數(shù)應(yīng)用.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Oracle分析函數(shù)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分析函數(shù)2008-08-302Oracle分析函數(shù),在一般的應(yīng)用系統(tǒng)開(kāi)發(fā)時(shí),使用較少,主要集中報(bào)表開(kāi)發(fā),數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用中;對(duì)于一些語(yǔ)句中使用分析函數(shù),可以達(dá)到事半功倍的效果;Oracle的分析函數(shù)功
2、能強(qiáng)大,可以用于SQL的優(yōu)化,往往用普通的SQL需要好幾次表掃描的,用了分析函數(shù)后可以一句話解決;Oracle分析函數(shù)2008-08-303功能描述:用于一個(gè)語(yǔ)句中某些中間結(jié)果放在臨時(shí)表空間的SQL語(yǔ)句,可以理解為定義一些sql的結(jié)果集為變量,然后直接引用.(只能使用在select語(yǔ)句中)語(yǔ)法: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;上面例子目的是取部門(mén)及其下屬雇員資料WITH2008-08-304功能描述:樹(shù)狀查詢語(yǔ)法:[STARTWITHcondition]CONNECTBYcondition例子:selectid,lpad(rightname,level*5+lengthb(rightname),'--'),rightname,parentidfroms_u_rightstartwithparentid='0'connectbypriori
4、d=parentid;CONNECTBY2008-08-305功能描述:實(shí)現(xiàn)將從父節(jié)點(diǎn)到當(dāng)前行內(nèi)容以“path”或者層次元素列表的形式顯示出來(lái)語(yǔ)法: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功能描述:分組自定義匯總語(yǔ)法: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功能描述:分組小計(jì)及匯總語(yǔ)法:{ROLLUP
8、CUBE}(grouping_expression_list)例子:selectjob,deptno,sum(sal)total_salfromempgroupb
9、yrollup(job,deptno);ROLLUP(CUBE)2008-08-308功能描述:開(kāi)窗函數(shù)指定了分析函數(shù)工作的數(shù)據(jù)窗口大小,這個(gè)數(shù)據(jù)窗口大小可能會(huì)隨著行的變化而變化例子:over(orderbysalary)按照salary排序進(jìn)行累計(jì),orderby是個(gè)默認(rèn)的開(kāi)窗函數(shù)over(partitionbydeptno)按照部門(mén)分區(qū)over(orderbysalaryrangebetween50precedingand150following)每行對(duì)應(yīng)的數(shù)據(jù)窗口是之前行幅度值不超過(guò)50,之后行幅度值不超過(guò)150over(orderbysalaryrowsbetween50p
10、recedingand150following)每行對(duì)應(yīng)的數(shù)據(jù)窗口是之前50行,之后150行over(orderbysalaryrowsbetweenunboundedprecedingandunboundedfollowing)每行對(duì)應(yīng)的數(shù)據(jù)窗口是從第一行到最后一行,等效:over(orderbysalaryrangebetweenunboundedprecedingandunboundedfollowing)OVER2008-08-309功能描述:返回有序組中一行