Supongamos que estoy almacenando events
asociado con users
en una tabla de la siguiente manera (con dt
de pie en la fecha y hora del evento):Consulta de secuencias de filas en SQL
| 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 |
De tal manera que podríamos decir:
- usuario 1 tiene un evento de secuencia de ADBCB
- usuario 2 tiene evento de secuencia BBAAC
Los tipos de preguntas que quisiera responder sobre estos usuarios son muy fáciles de expresar como expresiones regulares en las secuencias de eventos, p. "¿Qué usuarios tienen una secuencia de eventos que coincida con A. * B?" o "¿qué usuarios tienen una secuencia de eventos que coincida con A [^ C] * B [^ C] * D?" etc.
¿Cuál sería una buena técnica de SQL u operador que podría usar para responder consultas similares sobre esta estructura de tabla?
¿Hay alguna forma de generar eficiente/dinámicamente una tabla de user
-to- event-sequence
que luego se pueda consultar con expresiones regulares?
Actualmente estoy usando Postgres, pero tengo curiosidad por saber si alguno de los más grandes DBMS como SQLServer u Oracle también tienen operadores especializados para esto.
Excelente, ¡gracias! – nicolaskruchten
Para MySQL, 'GROUP_CONCAT' ofrece una solución similar a' string_agg'. – patrickmdnet