当前位置: 首页 > 知识库问答 >
问题:

谁给他的员工支付的平均工资最高?

殳凯捷
2023-03-14

有两张桌子:

Employee

e_id | e_name | m_id | d_id | salary | bonus
  1     Andi     3      B     56000    10000
  2     Sam      4      A     24000
  3     Dave            A     89000    23000
  4     Mike     3      C     62000    15000
  5     Red      1      B     42000
  6     Don      1      C     37000
  7     Bill     4      C     39000
Department

d_id | d_name | mg_id | location
 A       Dep1     3       US
 B       Dep2     1       DE
 C       Dep3     4       RU
SELECT Employee.e_name
  FROM Employee
    INNER JOIN Department
    ON Employee.e_id = Department.mg_id
    AND Employee.d_id = Department.d_id;

问题是如何找到哪个经理支付给他的员工的平均工资(+奖金)最高?

共有1个答案

慕冠宇
2023-03-14

你可以...

SELECT DeptHead.e_name, average(Employee.salary)
  FROM Department
   INNER JOIN Employee
       ON Employee.d_id = Department.d_id
   INNER JOIN Employee as DeptHead
       ON DeptHead.e_id = Department.mg_id
 GROUP BY DeptHead.e_name
 ORDER BY average (Employee.salary) DESC
  LIMIT 1;

这两次将department连接到employee表,一次获取部门负责人的信息,另一次获取员工信息。正因为如此,其中一个必须被“别名”。对于员工信息,按其分组,并使用聚合函数获取平均薪资。通过排序降序,您首先得到最高的记录,而通过限制在第一个记录,您只得到第一个=最高的记录。

 类似资料:
  • 我尝试了一个sql但不起作用 员工(EID,EName,城市) 工时(EID、CID、工资) 公司(CID、CName、城市) 创建表Employee(eid int主键,ename varchar(6),city varchar(6)) 创建表工时(eid int,cid int主键,salary int) 创建表Company(cid int,cname varchar(6),city var

  • 问题内容: 我需要获得fname,lname,比平均工资低400.00美元的员工薪水,即使在加薪10%之后。 我能够使薪水低于平均薪水的员工,但不确定如何使加薪后的薪水低于400美元的员工。 我正在使用MySQL。谢谢你。 这给了我工资低于平均工资的员工: 我当时在想这样的事情,但这是行不通的。未知专栏新闻: 问题答案: 您有一个正确的想法,就是不能在这样的子句中使用别名。只需直接使用公式,就可以

  • 我有一个方法,它用一个简单的返回一个按Id的雇员,但是现在我需要找到一个按分配了工资的雇员,(类和通过映射),我应该使用还是?

  • 我有一个表: 和表 而且我需要找到他们部门里工资最高的员工名单。 我可以通过以下方式实现这一点: 有没有更好的方法实现榜单?

  • 员工属于一个部门(外键=D_ID)。员工有一个SSN(主键)、姓名、工资和D_ID。

  • 问题内容: 我正在写一个查询,以查找收入高于其部门平均工资的员工。我需要显示员工ID,薪水,部门ID和该部门的平均工资。 我有一个几乎可以正常使用的查询,但它一直显示“ ORA-00904:“ AVG_SAL”:无效标识符”错误。我正确地做到了吗?为什么会出现此无效的标识符错误? 问题答案: 我不相信您可以在WHERE子句中引用列别名(在这种情况下为avg_sal)。 您需要重复该内部查询,即: