有两张桌子:
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;
问题是如何找到哪个经理支付给他的员工的平均工资(+奖金)最高?
你可以...
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)。 您需要重复该内部查询,即: