SQL查询计算用户的总工作时间
我正在尝试创建一个SQL查询,它可以计算按用户分组的总时间 例如:如果John Smith在30分钟内完成一项工作,在45分钟内完成另一项工作,则在我的数据库中创建两条记录。我需要一个可以显示的结果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
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表全部删除,因为它似乎未被使用。)