資源描述:
《Oracle_分析函數(shù)參考手冊.doc》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、Oracle9i分析函數(shù)參考手冊Oracle從8.1.6開始提供分析函數(shù),分析函數(shù)用于計算基于組的某種聚合值,它和聚合函數(shù)的不同之處是對于每個組返回多行,而聚合函數(shù)對于每個組只返回一行。下面例子中使用的表來自Oracle自帶的HR用戶下的表,如果沒有安裝該用戶,可以在SYS用戶下運行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql來創(chuàng)建。????少數(shù)幾個例子需要訪問SH用戶下的表,如果沒有安裝該用戶,可以在SYS用戶下運行$ORACLE_HOME/demo/schema/sales_histo
2、ry/sh_main.sql來創(chuàng)建。????如果未指明缺省是在HR用戶下運行例子。????開窗函數(shù)的理解:????開窗函數(shù)指定了分析函數(shù)工作的數(shù)據(jù)窗口大小,這個數(shù)據(jù)窗口大小可能會隨著行的變化而變化,舉例如下:over(orderbysalary)按照salary排序進行累計,orderby是個默認的開窗函數(shù)over(partitionbydeptno)按照部門分區(qū)over(orderbysalaryrangebetween50precedingand150following)每行對應的數(shù)據(jù)窗口是之前行幅度值不超過50,之后行幅度值不超過150ove
3、r(orderbysalaryrowsbetween50precedingand150following)每行對應的數(shù)據(jù)窗口是之前50行,之后150行over(orderbysalaryrowsbetweenunboundedprecedingandunboundedfollowing)每行對應的數(shù)據(jù)窗口是從第一行到最后一行,等效:over(orderbysalaryrangebetweenunboundedprecedingandunboundedfollowing)主要參考資料:《expertone-on-one》TomKyte??《Oracl
4、e9iSQLReference》第6章AVG功能描述:用于計算一個組和數(shù)據(jù)窗口內表達式的平均值。SAMPLE:下面的例子中列c_mavg計算員工表中每個員工的平均薪水報告,該平均值由當前員工和與之具有相同經理的前一個和后一個三者的平均數(shù)得來;SELECTmanager_id,last_name,hire_date,salary,AVG(salary)OVER(PARTITIONBYmanager_idORDERBYhire_dateROWSBETWEEN1PRECEDINGAND1FOLLOWING)ASc_mavg?FROMemployees;M
5、ANAGER_IDLAST_NAMEHIRE_DATESALARY????C_MAVG----------------------------------------------------------------100Kochhar????????????21-SEP-89????17000????17000????100DeHaan????????????13-JAN-93????17000????15000????100Raphaely???07-DEC-94????1100011966.6667100Kaufling??????????01
6、-MAY-95????790010633.3333????100Hartstein????????????17-FEB-96????130009633.33333????100Weiss??????????????18-JUL-96????800011666.6667????100Russell????????????01-OCT-96????1400011833.3333...CORR功能描述:返回一對表達式的相關系數(shù),它是如下的縮寫:COVAR_POP(expr1,expr2)/STDDEV_POP(expr1)*STDDEV_POP(expr
7、2))從統(tǒng)計上講,相關性是變量之間關聯(lián)的強度,變量之間的關聯(lián)意味著在某種程度??????上一個變量的值可由其它的值進行預測。通過返回一個-1~1之間的一個數(shù),相關系數(shù)給出了關聯(lián)的強度,0表示不相關。SAMPLE:下例返回1998年月銷售收入和月單位銷售的關系的累積系數(shù)(本例在SH用戶下運行)SELECTt.calendar_month_number,CORR(SUM(s.amount_sold),SUM(s.quantity_sold))?OVER(ORDERBYt.calendar_month_number)asCUM_CORR??FROMsal
8、ess,timestWHEREs.time_id=t.time_idANDcalendar_year=1998GROUPB