Q1:列出各部门薪水最高的员工
Q2:列出同一部门没有老板的员工
Q1答案)
Select e.name, Max_Sal.Sal
From Employees e
JOIN (Select d.DepartmentID,max(e.Salary) As Sal
From Employees e
JOIN Departments d ON e.DepartmentId=d.DepartmentId
Group by d.departmentID
) As Max_Sal
ON e.DepartmentId=Max_Sal.DepartmentID
and e.Salary=Max_Sal.Sal;
在第二季度,我不明白这个问题,[在同一个部门没有老板]。怎么知道老板在哪个部门?
答案 0 :(得分:1)
Q2:列出在同一部门没有老板的员工
这个问题有一个小技巧。
1 - 加入
SELECT e.*
FROM Employees e
LEFT OUTER JOIN Employees b on e.BossId = b.EmployeeId
请注意以下事项:
Employees
表,但我已经给它们分别命名了。 e
是每个员工; b
是该员工的老板。LEFT OUTER JOIN
来说明员工没有老板的可能性(b
将是NULL
)如果我们使用了INNER JOIN
,没有老板的员工会被遗漏在结果中。现在,我们有一张每个员工的表,与他们的老板有关。但我们仍然需要按要求过滤列表。
2 - 过滤
员工可以处于三种可能的状态:
重要的是要意识到所要求的输出需要包含情况3中的员工和情况1中的员工。我们应该只省略情况2中的员工。
使用伪SQL,这意味着您的查询应如下所示:
SELECT *
FROM the_data
WHERE
situation_1_applies
OR
situation_3_applies
单个过滤器并不难写:
SELECT e.*
FROM Employees e
LEFT OUTER JOIN Employees b on e.BossId = b.EmployeeId
WHERE
-- situation_1_applies
-- When b is NULL, all of b's columns are NULL
b.DepartmentId is NULL
OR
-- situation_3_applies
b.DepartmentId <> e.DepartmentId
答案 1 :(得分:0)
在同一个部门中没有老板,因此您可以认为Employees表中的bossID为空。所以你可以为一个组写一个SQL查询所有人都有相同的部门谁拥有bossID是空的:),所以这不是真的因为员工必须有一个老板(不是null),如果你告诉我全部字段表,也许我会告诉你我的答案。
另一方面,您可以认为,他们具有相同的bossID,因此您的任务将为一个组写一个SQL查询,所有人都具有相同的bossID,但他们有不同的部门。
我有一个示例MySQL查询(对于相同的bossID但不同的部门):
SELECT * FROM Employees as e
INNER JOIN department d ON d.departmentId = e.deparmentId
WHERE e.DepartmentID in (
SELECT DepartmentID
FROM Employees
GROUP BY DepartmentID
HAVING COUNT(*) = 1 /* it's fixed */
) AND e.BossID = 2 /* any value of bossID you want, you can join it with Boss table */
=====更新我的回答=====
我对这个问题有所了解。
任何人都必须有老板,而老板也是表SQL中的雇员。
' employeeName ' department name ' boss name
--------------------------------------------------------
' King ' Director '
' Victor ' Marketing ' King
' Angela ' Product ' King
' Ken ' Marketing ' Victor
' LaLa ' Marketing ' Victor
' Jery ' Business ' Ken
因为在同一个部门没有老板 - &gt;他们的部门不能拥有他们的老板。 =&GT;结果如下表所示:
' employeeName ' department name ' boss name
--------------------------------------------------------
' King ' Director '
' Victor ' Marketing ' King
' Angela ' Product ' King
' Jery ' Business ' Ken
如果您有正确的方法来理解这个问题,您可以在此发布,供所有人理解。感谢