This Oracle tutorial explains how to use the Oracle/PLSQL STDDEV function.
STDDEV(x)
returns standard deviation of x.
Standard deviation is defined as the square root of the variance.
STDDEV
operates on a group of rows and return one row of output.
Null values are ignored by STDDEV
function.
You can use the DISTINCT
keyword to exclude duplicate entries.
The STDDEV function can be used as an Aggregate function or as an Analytic function.
The syntax for the STDDEV function when used as an Aggregate function is:
stddev( [ DISTINCT | ALL ] expression )
expression is a numeric value or formula.
The syntax for the STDDEV function when used as an Analytic function is:
STDDEV( [ DISTINCT | ALL ] expression ) [ OVER ( analytical_clause ) ]
The SQL statement returns the cumulative standard deviation of the bonuses, ordered by salary.
select employee_name, bonus, STDDEV(bonus) OVER (ORDER BY salary) from employees;
CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
SAL NUMBER(7, 2),
DEPTNO NUMBER(2));
-- from w ww . jav a2 s . co m
INSERT INTO EMP VALUES (1, 'SMITH', 'CLERK', 800, 20);
INSERT INTO EMP VALUES (2, 'ALLEN', 'SALESMAN', 1600, 30);
INSERT INTO EMP VALUES (3, 'WARD', 'SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (4, 'JONES', 'MANAGER', 2975, 20);
INSERT INTO EMP VALUES (5, 'MARTIN','SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (6, 'BLAKE', 'MANAGER', 2850, 30);
INSERT INTO EMP VALUES (7, 'CLARK', 'MANAGER', 2850, 10);
INSERT INTO EMP VALUES (8, 'SCOTT', 'ANALYST', 3000, 20);
INSERT INTO EMP VALUES (9, 'KING', 'PRESIDENT',3000, 10);
INSERT INTO EMP VALUES (10,'TURNER','SALESMAN', 1500, 30);
INSERT INTO EMP VALUES (11,'ADAMS', 'CLERK', 1500, 20);
SQL> select stddev(sal) from emp;
STDDEV(SAL)
-----------
871.238669
SQL>
Using the STDDEV
function with the group by
clause:
SQL> select deptno, stddev(sal) from emp group by deptno;
DEPTNO STDDEV(SAL)
---------- -----------
30 666.520817
20 1098.74455
10 106.066017
SQL>