Как рассчитать свободную / заблокированную емкость, зная время начала и окончания процесса и сохранить в динамической таблице календаря - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь сгенерировать некоторые данные, используя только SQL:

У меня есть таблица SQL с несколькими процессами с заданным временем начала и окончания.

Process | Start          | End
--------+----------------+---------------
A       | 13.05.19 14:00 | 13.05.19 15:00
B       | 16.05.19 03:00 | 26.05.19 14:00
C       | ...
D       | 

Эти процессы могут быть запущены на n рабочих местах. Например, n = 2. Каждый процесс может выполняться только на одном рабочем месте и занимает 100% емкости этого рабочего места во время работы. Таким образом, при n = 2 у меня есть работоспособность 200% или, другими словами, я могу работать над 2 процессами одновременно.

Я хочу получить обзор запланированных процессов в днях.

Дополнительная информация: Короткий процесс может также блокировать менее 100% мощности при просмотре полного дня.

Например, процесс занимает 6 часов -> 25% от емкости одного рабочего места в день.

Моя идея состоит в том, чтобы составить таблицу:

Day | blocked_capacity
----+----------------
1   | 100%
2   |  89%
3   |  13% 
4   |  94%

Вопроскак заполнить таблицу с датой на основе существующей таблицы. Я знаю, как сделать это с помощью вложенного цикла:

loop through days
    blocked_capacity = 0;
    loop through processes
        check if process starting/ending that day or running whole day
        calculate how many % useage
        blocked_capacity=blocked_capacity + xx%
    write day,blocked_capacity to SQL-Table

Но почему-то мне не нравится идея этих циклов, так как у меня много дней и много процессов, а также много таблиц данных. Я ищу какой-нибудь умный SQL-оператор, который может выполнять действия, описанные в цикле в Update-Statement

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