Я строю программу (COBOL), используя SQL для отслеживания зарегистрированного времени для особого времени пользователей.
У меня есть 3 таблицы:
table 1 - user logged time
table 2 - user logged time
table 3 - user profile
Этот же пользовательне в таблице 1 и таблице 2, и все пользователи находятся в таблице 3.
Мне нужно подсчитать, сколько пользователей с профилем X в последний раз вошли в систему, когда вошли в систему: меньше, чемчас между 1 часом и 5 часами больше чем 5 часов.
Я нашел способ сделать 1 подсчет, используя таблицы 1 и 3, с запросом:
`SELECT COUNT (DISTINCT A.user)
FROM table1 A
LEFT JOIN table3 B
ON B.user = A.user
WHERE B.profile = 'X'
AND A.HTIMEST = (SELECT MAX(HTIMEST)
FROM table1 A
WHERE B.user = A.user)
AND A.time BETWEEN 0 AND 1 `
Bt, что будет значить многозапросов только в одной программе.
Если бы вы могли помочь, я был бы очень благодарен.
Спасибо.
Table1:
User TimeLog Timestamp
1 0,5 2019-01-01
1 6 2018-11-31
4 2 2018-12-31
Table2:
User TimeLog Timestamp
2 0,5 2019-01-01
3 6 2018-11-31
5 2 2018-12-31
Table3:
User Profile
1 X
2 X
3 Z
4 X
5 Z
Ожидаемый результат:
Time loged Count
<1h 2 (User 1 e User 2)
>1h -<5h 1 (User 4) (User 5 doesn't have the right profile)
>5h 0 (User 3 doesn't have the right profile, and user 1 has more
recent data)