Предположим, я сохраняю событий
, связанных с пользователями
, в таблице следующим образом (с dt
вместо метки времени события):
| dt | user | event |
| 1 | 1 | A |
| 2 | 1 | D |
| 3 | 1 | B |
| 4 | 1 | C |
| 5 | 1 | B |
| 6 | 2 | B |
| 7 | 2 | B |
| 8 | 2 | A |
| 9 | 2 | A |
| 10 | 2 | C |
Таким образом, мы могли бы сказать:
Типы вопросов, на которые я хотел бы ответить об этих пользователях, очень легко ответить выражаются как обычные выражения для последовательностей событий, например, "какие пользователи имеют последовательность событий, соответствующую A. * B?" или "у каких пользователей последовательность событий соответствует A [^ C] * B [^ C] * D?" и т.п.
Какой хороший метод или оператор SQL я мог бы использовать для ответа на аналогичные запросы по этой структуре таблицы?
Есть ли способ эффективно / динамически генерировать таблицу пользователя
-to- event-sequence
, который затем можно было бы запросить с помощью регулярного выражения?
В настоящее время я рассматриваю возможность использования Postgres, но мне любопытно узнать, есть ли в более крупных СУБД, таких как SQLServer или Oracle, специальные операторы для этого. .