Если дан пример таблицы ниже действий, предпринятых пользователями в определенные временные метки:
id | ts | action
---+-----------+------
1 | 10039000 | scroll_10
1 | 10039002 | scroll_20
1 | 10039004 | click
1 | 10039006 | scroll_30
2 | 10044000 | scroll_10
2 | 10044002 | bounce
Мне нужно иметь возможность получить результаты перед первым non-scroll
действием для каждого ID
.
Если есть дополнительные scroll actions
для каждого пользователя, которые происходят в timestamps
после первого действия non-scroll
, их не следует извлекать.
Ожидаемый результат для приведенного выше образца будет:
id | action
---+-------
1 | scroll_10
1 | scroll_20
2 | scroll_10
Я пробовал следующий запрос:
SELECT id, action
FROM user_actions
WHERE ts < (SELECT MIN(ts)
FROM user_actions
WHERE action NOT LIKE '%scroll%'
)
Что дает мне результат:
id | action
---+-------
1 | scroll_10
1 | scroll_20
Так что это правильно для первого «идентификатора», но мне нужно, чтобы он затем искал следующее действие «без прокрутки» для следующего «идентификатора» и включил его в возвращение, которое я не могу получить это делать. Пытался «самостоятельно присоединиться» к той же таблице, но, похоже, синтаксис не может быть корректным.