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列是平均(工资)
我该如何解决这个问题?
Oracle有一个内置函数来计算标准差:STDDEV.
用法与任何聚合函数一样.
select stddev(salary)
from employees;
Run Code Online (Sandbox Code Playgroud)
我只是使用这个stddev功能
SELECT avg(salary) as mean,
stddev(salary) as sd
FROM employees
Run Code Online (Sandbox Code Playgroud)
group by employeeid因为那可能是独一无二的,所以没有意义.谈论员工的平均工资是没有意义的,你想要所有员工(或所有部门或其他可聚合单位)的平均工资