如何连接多个表并检索聚合

时间:2014-09-15 16:35:14

标签: sql sql-server

我有3个表,需要检索每个EmployeeID,它们的名称以及它们的总WorkTime。我的表结构如下:

DEPT TABLE

ID      DEPTNAME      DESIGNATION
1       MG            MANAGER
2       AN            ANALYTICS
3       DV            DEVELOPER
4       PM            PM

工作表

EMPID    WORKTIME   ID(FK TO TABLE DEPT)   DATE          
1        8          1                      09/15/2014
2        7          2                      09/15/2014
1        6          1                      09/16/2014
2        8          2                      09/16/2014

EMP TABLE

EMPID     NAME
1         SK
2         TK
3         MK
4         CK

我希望所有员工姓名都带有ID和总工作时间,如下所示:

EMPID     NAME      WORKTIME     NOOFDATESWORKS
1         SK        14(8+6)      2
2         TK        15(7+8)      2
3         MK                     0  
4         CK                     0

*请注意:员工可以为多个部门工作

1 个答案:

答案 0 :(得分:2)

SELECT  E.EmpID,
        E.Name,
        W.TotalWorkTime
FROM Emp E
LEFT JOIN ( SELECT EMID, SUM(WorkTime) TotalWorkTime
            FROM Work
            GROUP BY EMID) W
    ON E.EmpID =W.EMID

顺便说一句,部门ID不应该在Emp桌子而不是Work桌子上吗?因为它对我来说没什么意义< / p>