2016-11-21 56 views
1

我有一个数据表Employees。我想向员工列出所有员工的平均工资高于员工平均工资的员工。我写到目前为止的代码是:嵌套函数中的错误组

select employee_id, last_name, salary 
from employees 
group by employee_id 
having salary > (select avg(sum(salary)) 
       from employees); 

但是,当我运行这个时,发生了一个“无嵌套功能的嵌套函数”错误。我该如何解决?

+0

难道你只是想平均?不需要总和?是不是平均所有员工工资的总和除以数量?为什么总结?数学没有意义,编译器要求你更好地定义你的想法。也许你的意思是:“有工资”(从员工中选择平均工资(工资) );'如果你这样做,不需要外部团队。 – xQbert

回答

2

GROUP BY不必要的。外面的组是不聚合的。只有在使用聚合函数时才需要分组。由于没有聚合功能,没有分组通过!

双重聚合(avg(sum(salary))不需要子查询平均本身将返回一个平均值。不知道总和试图做什么。如果您平均总和,您将得到总和。 (说我有1,2,3,4,5:总和是15,平均值的平均值是15.但是,平均值是3.)

并且没有GROUP BY,HAVING变成了WHERE

SELECT employee_id, last_name, salary 
FROM employees 
WHERE salary > (SELECT avg(salary) 
       FROM employees); 
+0

谢谢xQbert!我犯了多么愚蠢的错误;忘了平均就够了。 – Tim

+0

有时我们都需要第二组眼睛。 (我通常还需要2 1/2个大脑; 1和1/2来弥补我犯的错误) – xQbert