SQL查询计算用户的总工作时间

SQL查询计算用户的总工作时间,sql,ms-access,Sql,Ms Access,我正在尝试创建一个SQL查询,它可以计算按用户分组的总时间 例如:如果John Smith在30分钟内完成一项工作,在45分钟内完成另一项工作,则在我的数据库中创建两条记录。我需要一个可以显示的结果 USER Time Worked Total Date John Smith 75 XX/XX/XXXX 我有的是这个 USER Time Worked Total Date John Smith

我正在尝试创建一个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]

我使用的是一个表单,用户只需选择一个日期,查看员工的工作时间。数据库表的设置方式时间项是一个日期/时间变量

你很接近。。。只需将您的minutesWorked计算包装在Sum()函数中,并添加一个group by,使用group by,您不需要使用distinct

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_表和员工之间的关系,这会导致笛卡尔积,从而导致意外结果


您应该真正定义表之间的关系(可能是在employeeID和/或date上)

@jpw在我点击save后捕获了丢失的连接。xQbert谢谢!我试过将函数和组的总和分开,而不是放在一起。。一旦您与多个员工或日期合作,您的结果可能不是您所期望的!(或者将employees表全部删除,因为它似乎未被使用。)