SQL Query计算用户的总工作时间

时间:2015-08-13 15:58:43

标签: sql ms-access

我正在尝试创建一个可以计算Grouped BY USER总时间的SQL查询。

例如:如果John Smith在30分钟内完成一项工作,而在45分钟内完成另一项工作,则在我的数据库中创建两条记录。我需要一个显示

的结果
USER         Time Worked Total     Date
John Smith           75            XX/XX/XXXX

我拥有的就是这个。

USER         Time Worked Total     Date
John Smith           45            XX/XX/XXXX
John Smith           30            XX/XX/XXXX

我可以计算每个工作完成的分钟数,但不计算总数 查询代码:

SELECT DISTINCT 
  Shipping_Table.Employee, 
  Shipping_Table.Date, 
  DateDiff("n",Shipping_Table.Start_Time,Shipping_Table.End_Time) AS MinutesWorked    
FROM Shipping_Table, Employees    
WHERE Shipping_Table.Date=[Forms]![Time Query]![DateCalc]

我正在使用表单,因此USER可以选择一个日期并检查他的员工工作了多少小时。设置数据库表的方式是时间条目是日期/时间变量。

1 个答案:

答案 0 :(得分:2)

你关闭...只需将你的会议记录包装在Sum()函数中并添加一个分组,并且通过分组,你不需要这个分支。

SELECT Shipping_Table.Employee, Shipping_Table.Date, 
      suM(DateDiff("n",Shipping_Table.Start_Time,Shipping_Table.End_Time)) AS MinutesWorked
    FROM Shipping_Table, Employees
    WHERE Shipping_Table.Date=[Forms]![Time Query]![DateCalc]
    GROUP BY Shipping_Table.Employee, Shipping_Table.Date

注意:您的加入缺少shipping_table和员工之间的关系,这会导致笛卡尔产品导致意外结果。

你应该真正定义表格如何与彼此相关(可能在employeeID和/或日期)