分配:
显示平均工资低于公司平均工资的部门中平均工资最高的部门的名称。[提示:使用嵌套子查询]
我的尝试:
Select Department, avg(Salary) as "Highest Average Salary"
from Employees
group by Department
having avg(Salary) > (
select Department, avg(Salary) as "Average Salary"
from Employees
group by Department
having avg(Salary) < (select avg(Salary) from Employees));
错误是因为子查询返回多列,可能返回多行。将子查询用作表达式时,它必须只返回一列,最多返回一行(如果返回零行,则值将被视为NULL
(。不能将AVG(Salary)
与多个值进行比较。
子查询可以正确查找平均工资低于公司平均工资的部门。但是您在主查询中没有正确使用它。
您不应该在WHERE
子句中使用它。你应该把它放在另一个子查询中,以获得平均值的最大值(练习中的"平均工资最高"(。然后,您可以在主查询的HAVING
子句中使用它来查找具有该平均工资的所有部门。
SELECT Department
FROM Employees
GROUP BY Department
HAVING AVG(Salary) = (
SELECT MAX(AvgSalary)
FROM (
select avg(Salary) as AvgSalary
from Employees
group by Department
having AvgSalary < (select avg(Salary) from Employees)
)
)