日期:2014-05-16  浏览次数:20877 次

关于SQL字段和函数同时查询的问题
员工表:EMP(EMPNO,ENAME);
部门表:DEPT(DEPTNO,DNAME);

要求查询 员工姓名,员工部门名,部门人数;

结果如: 
ENAME  DNAME  NUM
  E1     D1    2
  E2     D1    2
  E3     D2    1

我写的SQL是这样的:
SELECT A.ENAME,B.DNAME,(SELECT COUNT(A.DEPTNO) FROM EMP C WHERE A.DEPTNO = C.DEPTNO) AS NUM
FROM EMP A,DEPT B
WHERE A.DEPTNO = B.DEPTNO;

请问:我的SQL效率如何?有没有别的方法效率更高?
------最佳解决方案--------------------

select a.ename,b.dname,count(1)over(partition by a.deptno) cnt
  from emp a,dept b
 where a.deptno = b.deptno