Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我收到此错误“错误1241-Mysql中的操作数应包含1列”,请解决此问题_Mysql_Sql - Fatal编程技术网

我收到此错误“错误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与哪一个进行比较?此查询应该返回什么?为什么您认为需要在子查询中选择部门?问题基本上是,这将显示平均工资低于公司平均工资的部门中平均工资最高的部门的名称。[提示:使用嵌套子查询]请解决我的问题。谢谢,先生。