我需要以下问题的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/

10-11 08:38