有两张桌子:
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部门中的m_id显示管理部门的e_id;员工中的mg_id显示作为相应员工的经理的e_id。
我发现管理人员使用以下查询:
SELECT Employee.e_name
FROM Employee
INNER JOIN Department
ON Employee.e_id = Department.mg_id
AND Employee.d_id = Department.d_id;问题是如何找到哪个经理给他的员工支付最高的平均工资(+奖金)?
发布于 2016-12-05 14:54:25
你可以..。
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;这将将部门连接到employee表两次,一次用于获取部门主管的信息,另一次用于获取员工信息。正因为如此,其中一个必须被“化名”。对于员工信息,可以按其分组,并使用聚合函数获取平均薪资。通过降序,你得到了最高的第一,而限制在仅仅第一记录,你只得到第一=最高。
https://stackoverflow.com/questions/40976761
复制相似问题