如何从人事数据库查询管理3名及以上员工的主管姓名?
查询管理3名及以上员工的主管姓名
你的第二个SQL逻辑存在问题:按EMPLOYEE_NAME分组时,COUNT(BOSS_ID)统计的是当前员工作为下属时,其直属上级ID的出现次数,而非该员工作为主管时管理的下属总数,所以无法返回正确结果。
以下是两种可行的解决方案:
方案1:子查询关联原表
先通过子查询筛选出管理人数达标主管的BOSS_ID,再关联原表获取对应的姓名:
SELECT p.EMPLOYEE_NAME FROM PERSONNEL p WHERE p.EMPLOYEE_ID IN ( SELECT BOSS_ID FROM PERSONNEL GROUP BY BOSS_ID HAVING COUNT(BOSS_ID) >= 3 )
方案2:自连接分组统计
通过自连接将主管和下属数据关联,再按主管的ID和姓名分组,统计下属数量:
SELECT p.EMPLOYEE_NAME FROM PERSONNEL p JOIN PERSONNEL sub ON p.EMPLOYEE_ID = sub.BOSS_ID GROUP BY p.EMPLOYEE_ID, p.EMPLOYEE_NAME HAVING COUNT(sub.EMPLOYEE_ID) >= 3
注:如果存在主管未在PERSONNEL表中(如最高层级管理者),需根据实际情况调整,但通常人事数据库中主管本身也是员工,上述方案可直接使用。
内容的提问来源于stack exchange,提问作者rrrr2222
相关产品推荐
相关产品推荐

