2015-11-15 39 views
2

我有兩個SQL表,我試圖傳遞一個查詢,該查詢應該告訴我的部門名稱與超過2名員工的位置。編寫SQL以查找2個以上的相同事件及其名稱

員工:

+------+-----------+ 
| dept | firstname | 
+------+-----------+ 
| 100 | name1  | 
| 200 | name2  | 
| 200 | name3  | 
| 200 | name4  | 
| 100 | name4  | 
+------+-----------+ 

部門

+--------+----------+ 
| deptID | deptName | 
+--------+----------+ 
| 100 | Finance | 
| 200 | IT  | 
+--------+----------+ 

我嘗試:

SELECT deptName, dept, count(dept)>2 
FROM Employees, Departments GROUP by dept; 

但它只是返回 「Finnance」 的itterations

當我試圖

SELECT dept, count(dept)>2 
FROM Employees GROUP by dept; 

它返回財經爲0和IT爲1,所以如果我能找到一種方法來發現,「1」值,並得到它的DEPTNAME,但我不知道該如何繼續。

在這種情況下,它應該只是返回「IT」,因爲IT是超過2名員工中唯一的一個。我如何編寫查詢來獲取?

+1

家庭作業或作業? – lad2025

回答

1

試試這個

select a.deptName, count(b.firstname) 
from departments a, 
INNER JOIN employees b ON a.deptID = b.dept 
group by a.deptName 
having count(b.firstname) >2; 
+0

這工作很好!你介意一下第三行的內容嗎?主要在ON聲明之後。 – user3216887

+0

HAVING子句用於聚合函數的條件。 (類似於WHERE) – jarlh

+0

那麼第四行引導計數說每個a.deptName的計數,第五個說:從所有結果只顯示行'having'多於2 – scaisEdge

0

INNER JOINGROUP BYCOUNT是你想要的...現在試着看看他們的手冊頁。

+1

糟糕,這不是一個真正的答案。應該是一個評論,而不是。 – jarlh

+0

@jarlh小姐點擊:P – Blag

相關問題