У меня есть набор данных с 4 (соответствующие столбцы): уникальный id, user_id, time_stamp, event. Уникальный идентификатор является первичным ключом, user_id может быть повторен, time_stamp (datetime) принимается при возникновении события, событие - либо a) push-уведомление (push), либо b) приложение открытия пользователя (открыто).Расчет разницы между временами
Это может выглядеть следующим образом:
id user_id time_stamp event count it?
1 1 10 open
2 1 23 push -good
3 1 28 open
4 1 38 push -bad
5 1 65 open
6 1 85 push -good
7 1 89 open
8 1 28 push -bad
9 2 38 push -good
10 2 45 open
11 2 46 open
Я пытаюсь выяснить, если мои уведомления толчка полезны. Для этого мне нужно узнать, откроет ли пользователь приложение в течение 20 минут после push-уведомления. Я посчитаю это «успешным толчком», тогда как все остальные толчки не будут успешными. До сих пор у меня была идея, чтобы внутреннее соединение таблицы было само собой, но у меня проблема с дублированными строками. Например, мы получим ложные срабатывания с идентификаторами 4, потому что нужно учитывать только id 3.
SELECT * FROM
(SELECT * FROM table WHERE row = 'open') a
INNER JOIN (SELECT * FROM table WHERE row = 'push') b
ON a.user_id = b.user_id) WHERE a.time_stamp - b.timestamp < 20;
так как 3 - открытое действие и показывает, что нажатие уже полезно, вы не хотите считать 4? –
С моим исходным запросом идентификатор 4 подсчитывался по нажатию на id 2. Мы просто хотим посмотреть, приходят ли пользователи в приложение. –