2012-04-27 128 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;