Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
05.06.2020, 15:47
|
|||
---|---|---|---|
|
|||
Задача о рабочем времени сотрудников |
|||
#18+
Приветствую. Пытаюсь решить задачу подсчета количества часов, отработанных сотрудниками в течении заданного периода времени. В качестве исходных данных имеем таблицу с полями "sessionkey", "username", "startdate", "enddate". Все просто, но есть одно НО. Сотрудники могут как работать в одной сессии, так и запускать несколько сессий в разные моменты времени, и в разные моменты времени их завершать. Таким образом, для каждого сотрудника в таблице будет несколько записей с разными sessionkey и, соответственно, разными startdate и enddate. Если я делаю запрос типа: select username, sum(datediff(second,startdate,enddate)) from employee where (startdate between '2020-05-20 23:59:59' and '2020-05-21 23:59:59') group by username то получаю просто суммарную продолжительность всех сессий, в которых работал сотрудник в течении рабочего дня. Т.е., например, если сотрудник одновременно запустил три сессии и работал 5 часов, а потом эти сессии одновременно закрыл, то мы получим таким подсчетом 15 часов рабочего времени, что неверно. Соответственно, вопрос - как правильно посчитать все временнЫе интервалы с учетом их пересечений, чтобы в итоге вычислить сколько времени сотрудник работал в течении дня. Задача наверняка не очень сложная, но опыта в T-SQL совсем мало, поэтому прошу помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&tablet=1&tid=1686019]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 129ms |
0 / 0 |