日期:2014-05-17  浏览次数:20872 次

请用2种不同的sql写法,统计出所有部门下的员工人数,若某部门下不存在员工,则统计显示为0.显示结果为: 部门编号、员工人数
请用2种不同的sql写法,统计出所有部门下的员工人数,若某部门下不存在员工,则统计显示为0.显示结果为: 部门编号、员工人数

select b.deptno,count(a.empno) from dept_4908 b,emp4908 a where b.deptno=a.deptno(+) group by b.deptno;

.我写了一种,还有一种怎么写???求高手解答,谢谢
------最佳解决方案--------------------
select a.deptno,
       nvl((select count(1)
              from emp4908
             where deptno=a.deptno),0) emp_num
  from dept_4908 a;
------其他解决方案--------------------

--第一种
select b.deptno, nvl(c.cn, 0)
  from dept_4908 b,
       (select a.deptno, count(a.empno) cn from emp4908 a group by a.deptno) c
 where b.deptno = c.deptno(+);
 
 --第二种
 select b.deptno,
        (select count(a.empno) from emp_4908 a where a.deptno = b.deptno)
   from dept_4908;

------其他解决方案--------------------
谢谢楼上两位。学习了