我收到此错误“错误1241-Mysql中的操作数应包含1列”,请解决此问题
任务: 显示平均工资低于公司平均工资的部门中平均工资最高的部门的名称。[提示:使用嵌套子查询] 我的尝试:我收到此错误“错误1241-Mysql中的操作数应包含1列”,请解决此问题,mysql,sql,Mysql,Sql,任务: 显示平均工资低于公司平均工资的部门中平均工资最高的部门的名称。[提示:使用嵌套子查询] 我的尝试: Select Department, avg(Salary) as "Highest Average Salary" from Employees group by Department having avg(Salary) > ( select Department, avg(Salary) as "Average Salary"
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。不能将AVGSalary与多个值进行比较 子查询用于查找平均工资低于公司平均工资的部门是正确的。但是您在主查询中没有正确使用它 你不应该在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)
)
)
您将从子查询返回2列。如何将avgSalary与两列进行比较?此外,子查询可以返回多行。您希望将avgSalary与哪一个进行比较?此查询应该返回什么?为什么您认为需要在子查询中选择部门?问题基本上是,这将显示平均工资低于公司平均工资的部门中平均工资最高的部门的名称。[提示:使用嵌套子查询]请解决我的问题。谢谢,先生。