сотрудников. Сотрудник нажал кнопку, начал работать. Записалось в базе:
id_сотрудника | датавремя | статус
——————————————————————————————————————————
1 | 2021-08-30 8:01 | 1
далее человек пошел попить чайку нажал кнопку в базу записалось:
1 | 2021-08-30 10:15 | 0
Итого в таблице получается что то типа такого:
id_сотрудника | датавремя | статус
——————————————————————————————————————————
1 | 2021-08-30 8:01 | 1
2 | 2021-08-30 9:51 | 1
3 | 2021-08-30 9:58 | 0
1 | 2021-08-30 10:15 | 0
1 | 2021-08-30 10:25 | 1
2 | 2021-08-30 11:13 | 0
и т.д.
Нужно выводить отчет по каждому сотруднику за определенный период. Сколько сотрудник по времени был в рабочем статусе.
Например задаем определенный период с 1 по 31 число:
Сотрудник 1: 65:29:21
Сотрудник 2: 53:11:23
и тд
Можно ли это сделать в виде запроса на SQL или нужно писать внешний код который и будет это вычислять.
Или же есть какие то более простые способы реализовать данный функционал?
Стикер
А нельзя писать время присутствия(количество минут(секунд), вместо даты?
нет. Потому что отчет по времени нужно по разным периодам делать.
Тебе надо сначала выделить последовательные интервалы работы человека. Это не реляционная задача в принципе. Решается в СУБД курсором с пробегом по таблице по порядку времени. Это за О(n ). Запросом это тоже можно, но будет за О(n*n) нет смысла делать
Что означает "выделить последовательные интервалы работы человека"?У меня есть грубо говоря кнопка на IP телефоне которую сотрудник нажимает и начинает работу. В это время я могу что то записать в базу
У тебя начало интервала в одной записи, соответствующий конец - в другой записи. а надо чтобы начало и конец интервала работы были бы в ОДНОЙ записи.
Обсуждают сегодня