1. 程式人生 > >Oracle分析函式五——統計分析函式

Oracle分析函式五——統計分析函式

原創於2009年08月02日,2009年10月22日遷移至此。

Oracle 分析函式——統計分析函式

方差和標準差:

樣本中各資料與樣本平均數的差的平方和的平均數叫做樣本方差;樣本方差的算術平方根叫做樣本標準差。樣本方差和樣本標準差都是衡量一個樣本波動大小的量,樣本方差或樣本標準差越大,樣本資料的波動就越大。

數學上一般用 E{[X-E(X)]^2} 來度量隨機變數 X 與其均值 E(X) 即期望的偏離程度,稱為 X 的方差。

方差是標準差的平方

方差和標準差。方差和標準差是測算離散趨勢最重要、最常用的指標。方差是各變數值與其均值離差平方的平均數,它是測算數值型資料離散程度的最重要的方法。標準差為方差的平方根,用

S 表示。

StdDev 返回 expr 的樣本標準偏差。它可用作聚集和分析函式。它與 stddev_samp 的不同之處在於,當計算的輸入資料只有一行時, stddev 返回 0 ,而 stddev_samp 返回 null

Oracle 資料庫 中,標準偏差計算結果與 variance 用作集聚函式計算結果的平方根相等。該函式引數可取任何數字型別或是任何能隱式轉換成數字型別的非數字型別。

STDDEV

功能描述:計算當前行關於組的標準偏離。( Standard Deviation

SAMPLE

STDDEV_SAMP

功能描述: 該函式計算累積樣本標準偏離,並返回總體變數的平方根,其返回值與

VAR_POP 函式的平方根相同。( Standard Deviation Sample

SAMPLE

它與 stddev_samp 的不同之處在於,當計算的輸入資料只有一行時, stddev 返回 0 ,而 stddev_samp 返回 null

SELECT

 department_id,

 first_name||' '||last_name employee_name,

 hire_date,

 salary,

 STDDEV_SAMP(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS cum_sdev

 FROM employees

 WHERE department_id in (20,30,60);

STDDEV STDDEV_SAMP 的區別

SELECT

 first_name||' '||last_name employee_name,

 hire_date,

 salary,

 STDDEV(salary) OVER (ORDER BY hire_date) "StdDev",

 STDDEV_SAMP(salary) OVER (ORDER BY hire_date) AS cum_sdev

 FROM employees

VAR_POP

功能描述:( Variance Population )該函式返回非空集合的總體變數(忽略 null ), VAR_POP 進行如下計算:

(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)

VAR_SAMP

功能描述:( Variance Sample )該函式返回非空集合的樣本變數(忽略 null ), VAR_POP 進行如下計算:

(SUM(expr*expr)-SUM(expr)*SUM(expr)/COUNT(expr))/(COUNT(expr)-1)

SAMPLE

VARIANCE

功能描述:該函式返回表示式的變數, Oracle 計算該變數如下:

如果表示式中行數為 1 ,則返回 0

如果表示式中行數大於 1 ,則返回 VAR_SAMP

SAMPLE

SELECT

 department_id,

 first_name||' '||last_name employee_name,

 hire_date,

 salary,

 STDDEV(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS "STDDEV",

 STDDEV_SAMP(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS "STDDEV_SAMP",

 VAR_POP(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS "VAR_POP",

 VAR_SAMP(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS "VAR_SAMP",

 VARIANCE(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS "VARIANCE" 

 FROM employees

協方差分析是建立在方差分析和迴歸分析基礎之上的一種統計分析方法。

方差分析是從質量因子的角度探討因素不同水平對實驗指標影響的差異。一般說來,質量因子是可以人為控制的。

迴歸分析是從數量因子的角度出發,通過建立迴歸方程來研究實驗指標與一個 ( 或幾個 ) 因子之間的數量關係。但大多數情況下,數量因子是不可以人為加以控制的。

兩個不同引數之間的方差就是協方差

若兩個隨機變數 X Y 相互獨立,則 E[(X-E(X))(Y-E(Y))]=0 ,因而若上述數學期望不為零,則 X Y 必不是相互獨立的,亦即它們之間存在著一定的關係。

定義

E[(X-E(X))(Y-E(Y))] 稱為隨機變數 X Y 的協方差,記作 COV(X Y) ,即 COV(X Y)=E[(X-E(X))(Y-E(Y))]

COVAR_POP

功能描述:返回一對錶達式的總體協方差。

SAMPLE

COVAR_SAMP

功能描述:返回一對錶達式的樣本協方差

SAMPLE

SELECT

 a.department_id,

 a.employee_id,

 b.employee_id manager_id,

 a.first_name||' '||a.last_name employee_name,

 b.first_name||' '||b.last_name manager_name,  

 a.hire_date,

 a.salary employee_salary,

 b.salary manager_salary,

 COVAR_POP(a.salary,b.salary) OVER (ORDER BY a.department_id,a.hire_date ) AS CUM_COVP,

 COVAR_SAMP(a.salary,b.salary) OVER (ORDER BY a.department_id,a.hire_date ) AS CUM_SAMP

 FROM employees a,employees b

 WHERE a.manager_id=b.employee_id(+)

CORR

功能描述:返回一對錶達式的相關係數,它是如下的縮寫:

COVAR_POP(expr1,expr2)/STDDEV_POP(expr1)*STDDEV_POP(expr2))

從統計上講,相關性是變數之間關聯的強度,變數之間的關聯意味著在某種程度

上一個變數的值可由其它的值進行預測。通過返回一個 -1~1 之間的一個數 , 相關

係數給出了關聯的強度, 0 表示不相關。

SELECT

 a.department_id,

 a.first_name||' '||a.last_name employee_name,

 b.first_name||' '||b.last_name manager_name,  

 a.hire_date,

 a.salary employee_salary,

 b.salary manager_salary,

 CORR(a.salary,b.salary) OVER (ORDER BY a.department_id,a.hire_date ) AS CORR

 FROM employees a,employees b

 WHERE a.manager_id=b.employee_id(+)