資源描述:
《oracle分析函數(shù) 介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Oracle從8.1.6開始提供分析函數(shù),分析函數(shù)用于計(jì)算基于組的某種聚合值,它和聚合函數(shù)的不同之處是對(duì)于每個(gè)組返回多行,而聚合函數(shù)對(duì)于每個(gè)組只返回一行。下面例子中使用的表來自O(shè)racle自帶的HR用戶下的表,如果沒有安裝該用戶,可以在SYS用戶下運(yùn)行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql來創(chuàng)建。除本文內(nèi)容外,你還可參考:ROLLUP與CUBEhttp://xsb.itpub.net/post/419/29159分析函數(shù)使用例子介紹:http://xsb.itpub.net/post/419/44634本文如果未指明,缺省是在H
2、R用戶下運(yùn)行例子。開窗函數(shù)的的理解:開窗函數(shù)指定了分析函數(shù)工作的數(shù)據(jù)窗口大小,這個(gè)數(shù)據(jù)窗口大小可能會(huì)隨著行的變化而變化,舉例如下:over(orderbysalary)按照salary排序進(jìn)行累計(jì),orderby是個(gè)默認(rèn)的開窗函數(shù)over(partitionbydeptno)按照部門分區(qū)over(orderbysalaryrangebetween50precedingand150following)每行對(duì)應(yīng)的數(shù)據(jù)窗口是之前行幅度值不超過50,之后行幅度值不超過150over(orderbysalaryrowsbetween50precedingand150following)每行對(duì)應(yīng)的數(shù)據(jù)窗口
3、是之前50行,之后150行over(orderbysalaryrowsbetweenunboundedprecedingandunboundedfollowing)每行對(duì)應(yīng)的數(shù)據(jù)窗口是從第一行到最后一行,等效:over(orderbysalaryrangebetweenunboundedprecedingandunboundedfollowing)主要參考資料:《expertone-on-one》TomKyte《Oracle9iSQLReference》第6章AVG功能描述:用于計(jì)算一個(gè)組和數(shù)據(jù)窗口內(nèi)表達(dá)式的平均值。SAMPLE:下面的例子中列c_mavg計(jì)算員工表中每個(gè)員工的平均薪水報(bào)告,該
4、平均值由當(dāng)前員工和與之具有相同經(jīng)理的前一個(gè)和后一個(gè)三者的平均數(shù)得來;SELECTmanager_id,last_name,hire_date,salary,AVG(salary)OVER(PARTITIONBYmanager_idORDERBYhire_dateROWSBETWEEN1PRECEDINGAND1FOLLOWING)ASc_mavgFROMemployees;MANAGER_IDLAST_NAMEHIRE_DATESALARYC_MAVG----------------------------------------------------------------100Kochh
5、ar21-SEP-891700017000100DeHaan13-JAN-931700015000100Raphaely07-DEC-941100011966.6667100Kaufling01-MAY-95790010633.3333100Hartstein17-FEB-96130009633.33333100Weiss18-JUL-96800011666.6667100Russell01-OCT-961400011833.3333CORR功能描述:返回一對(duì)表達(dá)式的相關(guān)系數(shù),它是如下的縮寫:COVAR_POP(expr1,expr2)/STDDEV_POP(expr1)*STDDEV_POP
6、(expr2))從統(tǒng)計(jì)上講,相關(guān)性是變量之間關(guān)聯(lián)的強(qiáng)度,變量之間的關(guān)聯(lián)意味著在某種程度上一個(gè)變量的值可由其它的值進(jìn)行預(yù)測(cè)。通過返回一個(gè)-1~1之間的一個(gè)數(shù),相關(guān)系數(shù)給出了關(guān)聯(lián)的強(qiáng)度,0表示不相關(guān)。SAMPLE:下例返回1998年月銷售收入和月單位銷售的關(guān)系的累積系數(shù)(本例在SH用戶下運(yùn)行)SELECTt.calendar_month_number,CORR(SUM(s.amount_sold),SUM(s.quantity_sold))OVER(ORDERBYt.calendar_month_number)asCUM_CORRFROMsaless,timestWHEREs.time_id=t.
7、time_idANDcalendar_year=1998GROUPBYt.calendar_month_numberORDERBYt.calendar_month_number;CALENDAR_MONTH_NUMBERCUM_CORR-------------------------------1213.9943093824.8520408755.8466522046.8712506287.91