2016-11-20 43 views
1

這裏是我的表:每個部門有多少僱主工作?

SELECT * FROM DEPARTMENT; 

    DEPTNO DNAME    LOC                      
---------- -------------------- --------------------                  
     10 SWIFT WOLVER   WOLVERHAMPTON                   
     20 SWIFT BIR   BIRMINGHAM                    
     30 SWIFT MAN   MANCHESTER                    
     40 SWIFT LON   LONDON                     


SELECT * FROM Employee; 

    EMPNO ENAME  HIREDATE   SAL  DEPTNO                 
---------- ---------- ----------- ---------- ----------                 
     1039 KING  17-NOV-1980  5000   10                 
     1066 JONES  02-APR-1991  2975   20                 
     1088 SCOTT  23-AUG-2016  3000   20                 
     1276 ADAMS  26-SEP-2016  1100   20                 
     1002 FORD  03-DEC-1991  3000   20                 
     1169 SMITH  17-DEC-1990  800   20                 
     1098 BLAKE  01-MAY-1981  2850   30                 
     1099 ALLEN  20-FEB-1995  1600   30                 
     1221 WARD  22-FEB-1994  1250   30                 
     1454 MARTIN  28-SEP-1993  1250   30                 
     1544 TURNER  08-SEP-1981  1500   30                 
     1300 JAMES  03-DEC-1981  950   30                 
     1482 CLARK  09-JUN-1989  2450   10                 
     1134 MILLER  23-JAN-1985  1300   10                 

我有DEPTNO(EMPLOYEE表)上DEPTNO(部門表)的主鍵和外鍵。

我寫這個查詢應該列出多少僱主使用Group by命令各個部門工作的事,但不起作用。當我試圖運行查詢時,出現COUNT錯誤,但找不到具體的內容。誰能幫我這個?

SELECT DEPARTMENT.DNAME,COUNT(EMPLOYEE,DEPTNO) AS Numberofemployers FROM EMPLOYEE 
LEFT JOIN DEPARTMENT 
ON DEPARTMENT.DEPTNO = EMPLOYEE.DEPTNO 
GROUP BY DEPARTMENTNAME; 

回答

1

這是你想要什麼:

SELECT d.DNAME, COUNT(e.DEPTNO) AS Numberofemployees 
FROM DEPARTMENT d LEFT JOIN 
    EMPLOYEE e 
    ON d.DEPTNO = e.DEPTNO 
GROUP BY d.DNAME; 

注意事項;

  • 您由部門名稱聚集,所以我想你想的所有部門。因此,DEPARTMENT應該是LEFT JOIN中的第一個表格。
  • 你想在EMPLOYEE計數匹配的記錄。因此COUNT(e.DEPTNO)
  • COUNT()通常需要一個單獨的參數。你有多個參數。
  • 表別名使查詢更易於編寫和閱讀。