Расчет среднего времени активности по утрам - PullRequest
0 голосов
/ 13 июля 2020

Я создаю запрос для отслеживания активности учеников в школе на 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 

Моя текущая попытка получить продолжительность

IIF(starttime="AM" or starttime="PM",
#(= 3Hours / Total number of AM per person per day),
CDate(TimeSerial(Val([EndTime])\100,Val([EndTime]) Mod 100,0)-
TimeSerial(Val([starttime])\100,Val([starttime]) Mod 100,0))) 
AS Duration, 

Но я не уверен, как записать часть # (= 3 часа / общее количество AM на человека в день) в SQL. Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Попробуйте с:

Select ID, [Date], 3/Count(*) As Duration
From YourTable
Group By ID, [Date]

Изменить - со значениями времени:

Select 
    ID, 
    [Date], 
    IIF(
        [StartTime] = 'AM' Or [StartTime] = 'PM', 
        3/Count(*),
        (TimeSerial(Val([EndTime])\100,Val([EndTime]) Mod 100,0)-TimeSerial(Val([starttime])\100,Val([starttime]) Mod 100,0))*24
        ) As Duration
From 
    YourTable
Group By 
    ID, 
    [Date]
0 голосов
/ 13 июля 2020

Попробуйте следующий запрос:

SELECT ID, Date, (3/COUNT(*)) as Duration
FROM Table1
WHERE Starttime alike "AM"
GROUP BY ID , Date;

Этот запрос получит список идентификаторов и сгруппирует их на основе даты . И он получит только записи со статусом AM .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...