Sql 计算上午活动的平均时间
我正在创建一个查询,以便在MS Acces 2010上跟踪学生在学校的活动。我有一张表格如下:Sql 计算上午活动的平均时间,sql,ms-access,Sql,Ms Access,我正在创建一个查询,以便在MS Acces 2010上跟踪学生在学校的活动。我有一张表格如下: ID | Date | ActivityCode | Starttime | Endtime | Duration ---------------------------------------------------------- 1234 | 1/1/2020 | a | AM | AM | #(
ID | Date | ActivityCode | Starttime | Endtime | Duration
----------------------------------------------------------
1234 | 1/1/2020 | a | AM | AM | #(= 3Hours / Total number of AM per person per day)
1234 | 1/1/2020 | a | AM | AM | #In this case, Duration = 3/2 = 1.5 hr
9876 | 1/1/2020 | a | AM | AM |#(= 3Hours / Total number of AM per person per day)
9876 | 1/1/2020 | a | AM | AM | #In this case, Duration = 3/3 = 1 hr
9876 | 1/1/2020 | a | AM | AM | #In this case, Duration = 3/3 = 1 hrs
9876 | 1/1/2020 | a | 1200 | 1500 | #In this case, Duration = 1500-1200 = 3 hrs
我当前获取持续时间的尝试
IIFstarttime=AM或starttime=PM,
=3小时/每人每天的AM总数,
CDateTimeSerialVal[EndTime]\100,Val[EndTime]Mod 100,0-
时间序列[starttime]\100,Val[starttime]Mod 100,0
作为期限,
但我不知道如何在SQL中编写=3小时/每人每天am总数部分。感谢您的帮助。请尝试:
选择ID、[日期],3/计数*作为持续时间
从你的桌子上
按ID分组[日期]
编辑-使用时间值:
选择
身份证件
[日期],
IIF
[StartTime]=“AM”或[StartTime]=“PM”,
3/计数*,
TimeSerialVal[EndTime]\100,Val[EndTime]Mod 100,0-TimeSerialVal[starttime]\100,Val[starttime]Mod 100,0*24
作为持续时间
从…起
你的桌子
分组
身份证件
[日期]
请尝试以下查询:
SELECT ID, Date, (3/COUNT(*)) as Duration
FROM Table1
WHERE Starttime alike "AM"
GROUP BY ID , Date;
此查询将获取ID列表,并根据日期对其进行分组。并且它将只获得仅具有AM状态的记录。您的期望是什么,您想重写什么?是否可以将其放在一个表达式中?我修改了问题,使我的问题更具体。我不确定这个问题是否仍然适用。谢谢。可以用一种表达方式吗?我修改了问题,使我的问题更具体。我不确定这个问题是否仍然适用。谢谢,也许吧。请看扩展答案。它有效。非常感谢。但是,我不想使用GROUPBY,因为我还有其他列。可能吗?或者我应该在此基础上再进行一次查询吗?没有分组依据,您无法计数。因此,如果无法按剩余字段聚合最小值、最大值、第一值、最后值、平均值、分组,请创建一个新查询,并加入到该查询中。