如何在Oracle SQL Developer中计算标准偏差?

ron*_*ilp 1 sql oracle math group-by aggregate-functions

我有一个桌子员工,

CREATE TABLE employees (
employeeid NUMERIC(9) NOT NULL,
firstname VARCHAR(10),
lastname VARCHAR(20),
deptcode CHAR(5),
salary NUMERIC(9, 2),
  PRIMARY KEY(employeeid)
);
Run Code Online (Sandbox Code Playgroud)

我想计算工资的标准差.

这是我正在使用的代码:

select avg(salary) as mean, sqrt(sum((salary-avg(salary))*(salary-avg(salary)))/count(employeeid)) as SD 
from employees
group by employeeid;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
*Cause:    
*Action:
Error at Line: 260 Column: 12
Run Code Online (Sandbox Code Playgroud)

第260行第12列是平均(工资)

我该如何解决这个问题?

APC*_*APC 7

Oracle有一个内置函数来计算标准差:STDDEV.

用法与任何聚合函数一样.

select stddev(salary) 
from employees;
Run Code Online (Sandbox Code Playgroud)


Jus*_*ave 5

我只是使用这个stddev功能

SELECT avg(salary) as mean, 
       stddev(salary) as sd
  FROM employees
Run Code Online (Sandbox Code Playgroud)

group by employeeid因为那可能是独一无二的,所以没有意义.谈论员工的平均工资是没有意义的,你想要所有员工(或所有部门或其他可聚合单位)的平均工资