分组时 COUNT 不正确



我正在尝试显示管理其他员工的每位员工的员工数量,以及他或她使用下表 emp 管理的人数。

empno  ename   job         mgr         hiredate    sal      comm       deptno
-----  ------  ----------  ----------  ----------  -------  -------    ------
7369   Smith   Clerk       7902        1980-12-17  800                 20
7499   Allen   Salesman    7698        1981-02-20  1600     300        30
7521   Ward    Salesman    7698        1981-02-22  1250     500        30
7566   Jones   Manager     7839        1981-04-02  2975                20
7654   Martin  Salesman    7698        1981-09-28  1250     1400       30
7698   Blake   Manager     7839        1981-05-01  2850                30
7782   Clark   Manager     7839        1981-06-09  2450                10
7788   Scott   Analyst     7566        1982-12-09  3000                20
7839   King    President               1981-11-17  5000                10
7844   Turner  Salesman    7698        1981-09-08  1500     0          30
7876   Adams   Clerk       7788        1983-01-12  1100                20
7900   James   Clerk       7698        1983-12-03  950                 30
7902   Ford    Analyst     7566        1983-12-13  3000                20
7934   Miller  Clerk       7782        1982-01-23  1300

知道我该怎么做吗?

我试过了

select empno,count(mgr) from emp group by empno,mgr;

但这返回:

empno       count(mgr)
----------  ----------
7369        1
7499        1
7521        1
7566        1
7654        1
7698        1
7782        1
7788        1
7839        0
7844        1
7876        1
7900        1
7902        1
7934        1

非常感谢您的帮助。

select count(*) from employee_table group by mgr

我实际上会按mgr分组,然后每个经理都有一个组,可以进行计数以查看经理管理的人数。 然后,您可以在桌子上执行自我联接以获取该经理的信息。 像这样:

SELECT E1.Mgr, E2.ename, Count(*) as Number FROM Employees E1
INNER JOIN Employees E2 ON E1.mgr = E2.empno
GROUP BY E1.Mgr

虽然我还没有测试过这个。

你可以尝试这些不使用join的方法:

select mgr, count(eno) 
  from employee 
 group by mgr 

select name, e1.mgr, count(e1.eno) 
  from employee e1
 group by rollup (e1.mgr, name)