Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算上午活动的平均时间_Sql_Ms Access - Fatal编程技术网

Sql 计算上午活动的平均时间

Sql 计算上午活动的平均时间,sql,ms-access,Sql,Ms Access,我正在创建一个查询,以便在MS Acces 2010上跟踪学生在学校的活动。我有一张表格如下: ID | Date | ActivityCode | Starttime | Endtime | Duration ---------------------------------------------------------- 1234 | 1/1/2020 | a | AM | AM | #(

我正在创建一个查询,以便在MS Acces 2010上跟踪学生在学校的活动。我有一张表格如下:

    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,因为我还有其他列。可能吗?或者我应该在此基础上再进行一次查询吗?没有分组依据,您无法计数。因此,如果无法按剩余字段聚合最小值、最大值、第一值、最后值、平均值、分组,请创建一个新查询,并加入到该查询中。