我需要以下问题的SQL查询
Table: EMPLOYEE
DeptCode Level EmpID Name
Mkt VP 1 JOHN
Mkt GM 2 BOB
Mkt CLERK 3 TIM
IT GM 4 BILLY
IT GM 5 JESSICA
IT CLERK 6 MONICA
HR VP 7 NIKITA
HR GM 8 TOM
HR GM 9 HARRY
问题:对于每个部门,我想找到该部门中最高级别的员工。特定部门中最高级别的emp是否有2个或更多。那么该部门没有任何记录
级别的层次结构为:VP> GM>秘书
所以我应该得到以下结果
DeptCode Level EmpID Name
Mkt VP 1 JOHN
HR VP 7 NIKITA
对于IT来说,没有VP级的员工。下一级别是GM,但此级别有两个emp,因此没有为IT部门选择任何记录
如果您能就此提出答案或提出建议,我将不胜感激。
最佳答案
SELECT e.*
FROM (
SELECT DISTINCT
deptCode
FROM employee
) ed
JOIN employee e
ON e.empId =
(
SELECT empId
FROM employee ei
WHERE ei.deptCode = ed.deptCode
ORDER BY
FIND_IN_SET(level, 'VP,GM,CLERK')
LIMIT 1
)
WHERE NOT EXISTS
(
SELECT NULL
FROM employee eo
WHERE (eo.deptCode, eo.level) = (e.deptCode, e.level)
AND eo.empId <> e.empId
)
关于mysql - 在单个表上的SQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24332920/