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