请用2种不同的sql写法,统计出所有部门下的员工人数,若某部门下不存在员工,则统计显示为0.显示结果为: 部门编号、员工人数select b.deptno,count(a.empno) from dept_4908 b,emp4908 a where b.deptno=a.deptno(+) group by b.deptno;.我写了一种,还有一种怎么写???求高手解答,谢谢

解决方案 »

  1.   

    select a.deptno,
           nvl((select count(1)
                  from emp4908
                 where deptno=a.deptno),0) emp_num
      from dept_4908 a;
      

  2.   


    --第一种
    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;