根据员工工资显示最高管理者姓名

时间:2015-12-02 04:50:11

标签: sql

EMP_NAME

╔════════╦══════════╦═══════╦══════════╗
║ Emp_ID ║ Emp_Name ║ MG_ID ║ EMP_Desg ║
╠════════╬══════════╬═══════╬══════════╣
║  1001  ║  John    ║       ║ Manager  ║
║  1002  ║  Miller  ║       ║ Manager  ║
║  1003  ║  Ruby    ║ 1001  ║ Employee ║
║  1004  ║  Jack    ║ 1001  ║ Employee ║
║  1005  ║  Mary    ║ 1002  ║ Employee ║
╚════════╩══════════╩═══════╩══════════╝

emp_salary

╔════════╦════════╗
║ EMP_ID ║ Salary ║
╠════════╬════════╣
║  1003  ║  2000  ║
║  1004  ║  5000  ║
║  1005  ║  4000  ║
╚════════╩════════╝

如何获得经理名称,该经理名称下该经理的员工薪酬总额高于任何经理。

我想将John显示为顶部

2 个答案:

答案 0 :(得分:3)

这些方面的东西应该可以解决问题:

SELECT en1.MG_ID, en2.Emp_Name, SUM(es.Salary)
FROM emp_name en1 INNER JOIN emp_salary es ON en1.Emp_ID = es.EMP_ID
INNER JOIN emp_name en2 ON en1.MG_ID = en2.Emp_ID
GROUP BY en1.MG_ID, en2.Emp_Name
ORDER BY SUM(es.Salary) DESC
LIMIT 1

我假设您使用的是MySQL。

点击以下链接查看正在运行的演示:

SQLFiddle

答案 1 :(得分:0)

将表emp_name设为t1,将表emp_salary设为t2:

Select t1.emp_name, t1.emp_id
from EMP_NAME t1
where t1.emp_id in
    (Select t2.emp_id from EMP_SALARY t2 where MAX(t2.salary))
  AND t1.Emp_Desg = 'Manager%'