Oracle数据库中的方差、标准差与协方差

一、方差与标准差

/*
STDDEV()函数功能描述:
计算当前行关于组的标准偏离。(Standard Deviation)
STDDEV_SAMP()函数功能描述:
该函数计算累积样本标准偏离,并返回总体变量的平方根,其返回值与VAR_POP函数的平方根相同。
区别:当计算的输入数据只有一行时,stddev()返回0,而stddev_samp()返回null。
*/
--例子:
SELECT deptno,
       STDDEV (sal)  AS "STDDEV",               --标准差
       STDDEV_SAMP (sal) AS "STDDEV_SAMP",      --样本标准差
       VAR_POP (sal) AS "VAR_POP",              --方差
       VAR_SAMP (sal)  AS "VAR_SAMP"            --样本方差
FROM scott.emp
GROUP BY deptno;

二、协方差

       E[(X-E(X))(Y-E(Y))]称为随机变量X和Y的协方差,记作COV(X,Y),即:COV(X,Y)=E[(X-E(X))(Y-E(Y))]。若两个随机变量X和Y相互独立,则COV(X,Y)=0,因而若上述数学期望不为零,则X和Y必定不是相互独立的,亦即他们之间存在着一定的联系。

/*
COVAR_POP功能描述:
返回一对表达式的总体协方差。
COVAR_SAMP功能描述:
返回一对表达式的样本协方差
*/
--例子:
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(+);

猜你喜欢

转载自blog.csdn.net/gdkyxy2013/article/details/80816890