Stddev返回expr的样本标准偏差。它可用作聚集和分析函数。它与stddev_samp的不同之处在于,当计算的输入数据只有一行时,stddev返回0,而stddev_samp返回null。
Oracle数据库中,标准偏差计算结果与variance用作集聚函数计算结果的平方根相等。
该函数参数可取任何数字类型或是任何能隐式转换成数字类型的非数字类型。函数返回类型与函数参数类型相同,都为数字类型。
Distinct关键字仅能在analytic_clause的query_partition_clause中使用。在order_by_clause和windowing_clause中不允许使用distinct。
下面的例子返回hr.employees表中薪水的标准偏差:
SELECT STDDEV(salary) "Deviation" FROM employees;
Deviation
----------
3909.36575
下面的查询示例返回hr.employees表中部门30按照hire-date排序后薪水的累积标准偏差:
SELECT last_name, salary, STDDEV(salary) over(ORDER BY hire_date) "StdDev"
FROM employees
WHERE department_id = 30;
LAST_NAME SALARY StdDev
------------------------- ---------- -----------------
Raphaely 11000 0
Khoo 3100 5586.14357
Tobias 2800 4650.0896
Baida 2900 4035.26125
Himuro 2600 3649.2465
Colmenares 2500 3362.58829
Variance返回expr的方差。它可用作聚集或分析函数。
Oracle数据库按照下面原则计算expr的方差:
若符合expr的行数为1,则返回0
若符合expr的行数大于1,则返回var_samp。
Distinct关键字仅能在analytic_clause的query_partition_clause中使用。在order_by_clause和windowing_clause中不允许使用distinct。
该函数参数可取任何数字类型或是任何能隐式转换成数字类型的非数字类型。函数返回类型与函数参数类型相同,都为数字类型。
下面的例子计算employees表中所有薪水的方差:
SELECT VARIANCE(salary) "Variance" FROM employees;
Variance
----------
15283140.5
下面的例子返回部门30按雇佣日期排序的薪水值的累计方差:
SELECT last_name,
salary,
VARIANCE(salary) over(ORDER BY hire_date) "Variance"
FROM employees
WHERE department_id = 30;
LAST_NAME SALARY Variance
--------------- ---------- ----------
Raphaely 11000 0
Khoo 3100 31205000
Tobias 2800 21623333.3
Baida 2900 16283333.3
Himuro 2600 13317000
Colmenares 2500 11307000