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显示为顶部
答案 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。
点击以下链接查看正在运行的演示:
答案 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%'