我需要向特定经理展示总员工,但不知道如何减少这种情况

问题描述 投票:0回答:2
SELECT manager.ename AS "Mgr Name", ( Select COUNT(*) 
                                        FROM emp worker
                                        WHERE worker.mgr = manager.empno
                                        ) AS "Total Emp"
FROM emp worker, emp manager
WHERE worker.mgr = manager.empno;

enter image description here

sql
2个回答
2
投票

这个怎么样?它连接在同一个表上,以匹配所有经理和员工,并返回直接报告的数量:

  SELECT 
      m.ename AS [Mgr Name], 
      COUNT(DISTINCT e.empno) AS [Total Emp]
   FROM emp e
   JOIN emp m ON m.empno = e.mgr 
   GROUP BY m.ename;

1
投票

使用相关子查询或joingroup by

SELECT m.ename AS "Mgr Name",
       ( Select COUNT(*) FROM emp e WHERE e.mgr = m.empno
       ) AS num_employees
FROM emp m;
© www.soinside.com 2019 - 2024. All rights reserved.