Я пытаюсь сгенерировать некоторые данные, используя только 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