2012-10-18 38 views
-1

我完全不熟悉SQL。我創建了下面的表格..多列數和組

Employee 
- employee_id 
- employee_name 

Projects 
- project_id 
- project_name 

Roles 
- role_id 
- role_name 

Employee_project_role 
- employee_id 
- project_id 
- role_id 

我必須寫一個查詢:清單員工不同角色的數量,還列出了角色。 即如果員工(EMP1)在一個項目和試驗機(試驗)在其他兩個不同的項目工作作爲組長(TL),那麼輸出應該是:

employee_name count Role 
--------------------------- 
    emp1   1  TL 
    emp1   2  TEST 

回答

1
select 
    E.employee_name, 
    count(*) as cnt, 
    R.role_name 
from Employee_project_role as EPR 
    left outer join Employee as E on E.employee_id = EPR.employee_id 
    left outer join Roles as R on R.role_id = EPR.role_id 
group by E.employee_name, R.role_name 
3

嘗試,

SELECT COUNT(my_table.*), my_table.employee_name, my_table.role 
FROM 
(SELECT r.role_name as role, e.employee_name as employee_name 
FROM employee e 
JOIN employee_project_role epr ON epr.employee_id = e.employee_id 
JOIN roles r ON r.role_id = epr.role_id) my_table 
GROUP BY my_table.employee_name, my_table.role; 
1

使用分組來總計項目總數。

SELECT emp.employee_name,count(proj.project_name),role.role_name 
FROM employee emp , project proj , role role , employee_project_role main 
WHERE emp.employee_id = main.employee_id 
AND proj.project_id = main.project_id 
AND role.role_id = main.role_id 
group by emp.employee_name , role.role_name 

檢查在這裏SqlFiddle