2012-04-27 43 views
1

我是一個新手,我不知道如何去做這個..任何人都可以幫助我嗎?sql query .. confused

鑑於下表...

DEPARTMENT

DEPT_ID  NAME 
1 HR 
2 Technical 
3 Marketing 
4 Sales 

EMPLOYEE

ID NAME DEPT_ID  SALARY MANAGER_ID 
1 Alex 2 2000  
2 Sally 1 2000  
3 Amit 2 1500 1 
4 Jason 1 1500 1 
...  ...  ...  ...  ... 

使用從早期的DEPARTMENTEMPLOYEE表,寫一個SQL查詢,打印每個工作的員工數量d epartment。輸出應該是這個樣子:

NAME COUNT 
HR 2 
Technical 2 
Marketing 0 
Sales 0 

請注意,並非所有部門都尚未配備,所以有些部門可能沒有任何員工。我們仍然希望這些部門出現在結果中,數量爲零。

使用前面的EMPLOYEE表,編寫一個SQL查詢以打印出在每個管理器下工作的員工數量。輸出應該是這個樣子:

NAME COUNT 
Alex 2 
Sally 0 
+2

這是功課?你諮詢過一本書嗎? – dirkgently 2012-04-27 19:52:13

+0

請給我一個方向..我不是在尋找完整的答案。 – 2012-04-27 19:55:44

+0

從SQL開始 - 這意味着在這裏:使用SELECT語句。告訴數據來自何種JOIN條件下的數據。 – Randy 2012-04-27 19:58:45

回答

0

解決問題的第一部分:

select d.NAME, count(e.NAME) 
from EMPLOYEE as e 
right join DEPARTMENT as d 
on e.DEPT_ID = d.DEPT_ID 
group by d.DEPT_ID 

解決問題的第二部分(我不知道這是否一個正確與否):

select NAME, count(NAME) 
from EMPLOYEE 
group by MANAGER_ID 

請檢查sqlfiddle:http://sqlfiddle.com/#!2/5e802/13

+0

第二個肯定是不正確的 - 表格需要自動加入(注意,結果需要打印_manager's_的名字,對於第一個,大多數人會更容易把'Department'放入'FROM'子句和'LEFT JOIN''到'Employee'。 – 2014-03-18 10:25:11

0

試試這個,它可以幫助你:

一)

select d.Name as DepartmentName, count(e.id) as EmployeeCount from employee as e, department as d where e.DEPT_ID = d.DEPT_ID group by d.Name; 

B)

select a.name as Manager_Name,Count(a.name) as EmployeeCount from employee a, employee b where a.id=b.MANAGER_ID group by a.name;