Как рассчитать время простоя рабочего места, если у меня есть время начала / окончания интервалов перекрывающихся работ? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть база данных PostgreSQL, содержащая три столбца: один для персонального номера работника, один для времени начала / окончания, один для типа соответствующего действия (начало или остановка).

Как я могу узнать, какое время не используется в течение дня?

 personal_number | callback_time | callback_type
-----------------+---------------+---------------
 18000130        | 11:05:31      | Start
 18000130        | 12:58:07      | Break
 18000130        | 12:58:14      | Start
 18000130        | 13:33:46      | Break
 18000130        | 13:33:52      | Start
 18000130        | 14:00:16      | Break
 18000168        | 13:59:35      | Start
 18000168        | 14:29:41      | Break
 18000168        | 14:29:53      | Start
 18000168        | 15:31:52      | Break
 18000168        | 15:32:04      | Start
 18000168        | 17:26:05      | Break
 18000168        | 17:26:14      | Start
 18000168        | 18:52:15      | Break
 18000168        | 21:05:39      | Start
 18000168        | 21:47:12      | Break
 18000241        | 05:58:15      | Start
 18000241        | 05:58:57      | Break
 18000241        | 06:00:13      | Start
 18000241        | 09:15:10      | Break
 18000241        | 09:37:17      | Start
 18000241        | 10:35:15      | Break
 18000241        | 10:35:25      | Start
 18000241        | 11:05:39      | Break
 18000241        | 11:05:47      | Start
 18000241        | 12:58:22      | Break
 18000241        | 12:58:30      | Start
 18000241        | 13:35:08      | Break
 18000241        | 13:35:15      | Start
 18000241        | 14:00:23      | Break
 18002441        | 02:55:20      | Start
 18002441        | 03:12:44      | Break
 18002441        | 03:12:56      | Start
 18002441        | 04:07:41      | Break
 18002441        | 22:30:47      | Start

Я могу рассчитать время, которое используется для каждого работника (как сумма различий между началом и перерывом). Однако эти работники могут работать параллельно, поэтому простая формула 24 часа - рабочее время работать не будет. Если я не могу рассчитать перекрывающиеся рабочие часы, что я тоже не могу выполнить sh.

Я также могу рассчитать время, которое не используется ДО первого запуска и ПОСЛЕ последнего перерыва.

Понятия не имею, как рассчитать время, которое не используется в оставшуюся часть дня, т. Е. Как суммировать интервалы бездействия.

Я пытаюсь сделать это в Python, но я открыт для любых идей.

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