【问题标题】:SQL - Sum issue with joinsSQL - 连接的求和问题
【发布时间】:2020-04-10 14:52:27
【问题描述】:

我是 SQL 新手。

查询:

SELECT 
    E.name AS Employee_Name, 
    P.HoursWorked AS Hours_Worked, 
    DATENAME(month, C.dayid) AS Month_Name
FROM employee E
INNER JOIN employeepaysummary P ON E.employeeId = P.employeeId
INNER JOIN CalendarDay C ON P.dayid = C.dayid ;

返回以下结果:

Employee_Name   Hours_Worked    Month_Name
John, Sturgis       6           January
John, Sturgis       8           January
John, Sturgis       8           January
Sheldon, Cooper     7           January
Sheldon, Cooper     6           January

如何对 (hours_worked) 列求和?

【问题讨论】:

  • 编辑您的问题并显示您想要的结果。同时标记您正在使用的数据库。

标签: sql sql-server join sum


【解决方案1】:

你应该使用SUM聚合函数:

SELECT 
    E.name AS Employee_Name, 
    SUM(P.HoursWorked) AS Hours_Worked, 
    DATENAME(month, C.dayid) AS Month_Name
FROM employee E
INNER JOIN employeepaysummary P ON E.employeeId = P.employeeId
INNER JOIN CalendarDay C ON P.dayid = C.dayid 
GROUP BY 
    E.employeeId, E.name, DATENAME(month, C.dayid);

【讨论】:

  • 非常感谢
【解决方案2】:

你只需要一个分组

   select E.name as Employee_Name, sum(P.HoursWorked) as Hours_Worked, 
from employee E
INNER JOIN employeepaysummary P ON E.employeeId = P.employeeId
INNER JOIN CalendarDay C ON P.dayid = C.dayid group by Employee_Name ;

【讨论】:

    【解决方案3】:

    请标记您的数据库。但是下面的查询应该可以正常工作。你需要使用sum()group by

    select E.name as Employee_Name, sum(P.HoursWorked) as Hours_Worked, 
    DATENAME(month, C.dayid) AS Month_Name
    from employee E
    INNER JOIN employeepaysummary P ON E.employeeId = P.employeeId
    INNER JOIN CalendarDay C ON P.dayid = C.dayid 
    group by E.name,DATENAME(month, C.dayid);
    

    【讨论】:

    • 如果有 2 个不同的员工同名,您的查询可能会出错
    • 非常感谢。
    猜你喜欢
    • 2021-05-07
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多