我有一个数据表Employees。我想向雇员表中显示收入超过所有员工平均工资的员工。我到目前为止编写的代码是:
select employee_id, last_name, salary
from employees
group by employee_id
having salary > (select avg(sum(salary))
from employees);
但是,当我运行它时,出现了“没有group by的嵌套函数”错误。我该如何解决这个问题?
答案 0 :(得分:2)
GROUP BY
不必要。外部组没有聚合。只有在使用聚合函数时才需要分组。由于没有聚合功能,没有组合!
子查询中的双重聚合(avg(sum(salary))
不需要Avg,其本身就会返回平均值。不确定总和是在尝试做什么。如果你平均总和,你将得到总和。 (假设我有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);