6

我正在尝试使用下表显示管理其他员工的每个员工的员工编号以及他或她管理的人数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

非常感谢你的帮助。

4

3 回答 3

4

select count(*) from employee_table group by mgr

于 2012-06-12T18:02:40.680 回答
3

我实际上会按 分组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

虽然我没有测试过这个。

于 2012-06-12T18:04:32.710 回答
1

您可以尝试这些不使用连接的方法:

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)
于 2012-06-12T18:33:58.763 回答