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

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