В таблице ниже представлены события принятия решения о лицензии данного файла.
Я хочу получить список лицензий для файла. Если для столбца «Удалено» события задано значение «Ложь», добавляется лицензия, но не более одной лицензии для каждого файла. Если для столбца Removed установлено значение True, все предыдущие события добавления для конкретной лицензии отменяются. Событие, совершенное позже, имеет приоритет над предыдущими.
Для приведенных ниже событий я хочу вернуть список [A, B]. Лицензия A имеет события add, remove, add, поэтому она возвращается. В лицензии B есть события add, add, поэтому она возвращается, но не дублируется. Лицензия C имеет события add, add, remove, поэтому она не удаляется, поскольку последнее удаление аннулирует оба add-события.
Возможно ли это сделать с помощью запроса PostgreSQL, или мне нужно обрабатывать данные потом?
+------+---------+---------+
| Time | License | Removed |
+------+---------+---------+
| 1 | A | False |
| 2 | A | True |
| 3 | A | False |
| 4 | B | False |
| 5 | B | False |
| 6 | C | False |
| 7 | C | False |
| 8 | C | True |
+------+---------+---------+