【问题标题】:Find Names of all the employees and the hours worked on each project ID查找所有员工的姓名和每个项目 ID 的工作时间
【发布时间】:2013-02-25 07:44:22
【问题描述】:

我有一个数据库,其中包括一个分配表和一个员工表。每个表都包含员工 ID。多个员工在同一个项目上工作,我需要能够获得每个项目 ID 和工作时间的员工姓名列表。我尝试了以下方法,但无法正常工作。

Select FirstName, LastName, ProjectID, HoursWorked
From employee e, assignment a
Where e.EmployeeNumber = a.EmployeeNumber
Group by projectID; 

编辑:在第一个答案之后,我将查询更改为:

SELECT  FirstName, LastName, ProjectID, HoursWorked
FROM    employee e, assignment a
Where e.EmployeeNumber = a.EmployeeNumber
GROUP   BY ProjectID, FirstName, LastName;

结果很好,我想我不完全理解按部分分组。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    你需要使用聚合函数SUM()才能得到列的总值,

    SELECT  FirstName, 
            LastName, 
            ProjectID, 
            SUM(HoursWorked) totalHoursWorked
    FROM    employee e
            INNER JOIN assignment a
                ON e.EmployeeNumber = a.EmployeeNumber
    GROUP   BY FirstName, LastName, ProjectID
    

    【讨论】:

    • 嗯,实际工作时间值已经是一个总数。您的查询有效,但是只需将名字和姓氏添加到我的组中返回完全相同的内容...我不完全理解为什么,但我想这就是我所缺少的。
    • 获取HoursWorked的公式是什么?
    • 它只是一个已经填入数据库的属性。
    • 如果HoursWorked 已经是一个总数,那么为什么不需要group by?此查询的结果SELECT FirstName, LastName, ProjectID, HoursWorked FROM employee e INNER JOIN assignment a ON e.EmployeeNumber = a.EmployeeNumberGROUP BY 有何不同?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多