2017-04-18 43 views
-3

給定一個帶有「DeptId」和「employeeId」字段的員工表,如何顯示僱員數多於部門20的所有部門? 我想顯示部門中的員工編號和編號。SQL:將「group by」應用於查詢,並附加邏輯

到目前爲止,我已經試過這樣:我好像

SELECT DeptId as "Dept Id", count(employeeId) as "Number of employee" 
FROM EMPLOYEE 
WHERE DeptId IN 
(
    SELECT DeptId 
    FROM EMPLOYEE 
    GROUP BY DeptId 
) 
AND DeptId <> 20 
group by DeptId; 

無法解決,我需要找到具有比部門更多的員工20

PS總福利局

部門的一部分
+0

請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

那麼,閱讀這個問題。然後閱讀接受的答案。它可能會給你一個想法。 – Strawberry

+0

okie ..感謝您的幫助,但我希望能直接回答我的問題。 – Djone

回答

-1

您需要額外的邏輯(另一個「AND」)。您需要a "HAVING" clause,而不是「WHERE」子句(在「GROUP BY」之前運行),它在「GROUP BY」之後運行。您的附加邏輯可以包含一個子查詢來查找部門的大小。將結果與每個部門的大小進行比較。

SELECT DeptId AS "Dept Id", COUNT(EmployeeId) AS "Number of employee" 
FROM EMPLOYEE 
GROUP BY DeptId 
HAVING 
    DeptId <> 20 
AND COUNT(EmployeeId) > (SELECT COUNT(EmployeeId) 
         FROM EMPLOYEE 
         WHERE DeptId = 20); 
+0

Downvote and no comment?請評論? –

+0

我不允許投票(低代表),所以它不是我,我正在測試你的解決方案 – Djone

+0

它給了我一個錯誤 00934. 00000 - 「組功能不允許在這裏」 – Djone

1

爲了便於說明,假設您有以下#Employee表:由DEPT_ID

+ ------ + -------------------- + ------- + 
| Emp_Id | Emp_Name    | Dept_Id | 
+ ------ + -------------------- + ------- + 
| 1  | Jim Ralston   | 6  | 
| 2  | Dave Davidson  | 20  | 
| 3  | Alexander The Great | 18  | 
| 4  | Tribbidy Trump  | 12  | 
| 5  | Anglo Saxon   | 6  | 
| 6  | Henry Ford   | 2  | 
| 7  | Thomas Eddison  | 9  | 
| 8  | Running out of names | 4  | 
| 9  | Two More    | 4  | 
| 10  | Done!    | 4  | 
+ ------ + -------------------- + ------- + 

組,並添加一個having子句指定的計數應該比數較大的部門20 :

select Dept_Id, COUNT(*) as NumberOfEmployees 
    from #Employee 
    group by Dept_Id 
    having COUNT(*) > (
     select COUNT(*) 
      from #Employee 
      where Dept_Id = 20 
    ) 

給了我們這個表:

+ ------- + ----------------- + 
| Dept_id | NumberOfEmployees | 
+ ------- + ----------------- + 
| 4  | 3     | 
| 6  | 2     | 
+ ------- + ----------------- + 
+0

有意義,謝謝! – Djone