Возвращает идентификаторы, для которых весь сеанс соответствует критериям - PullRequest
0 голосов
/ 18 сентября 2018

Моя таблица, T, похожа на эту

   id        event       category    request

    1        click           a          1
    2        click           b          2
    1        click           b          2
    1        cart_add                   3
    3        click           a          1
    3        card_add                   2
    3        purchase                   3
    2        click           c          1
    2        card_add                   3
    1        purchase                   4

, и я хочу вернуть посетителей, которые щелкнули товары категории b и добавили товар категории b в корзину, а также тех, кто сделал покупку послетот.Итак, как люди, которые добавили продукты категории b, так и те, кто сделал покупки продуктов категории b.

Моя проблема заключается в запросе сессии.Как правило, они не в порядке, и фактическая таблица, которую я использую, состоит из миллиона строк, поэтому упорядочивание занимает очень много времени.

Есть ли хороший способ найти все идентификаторы, которые соответствуют вышеуказанным критериям, илипроще сделать анализ в R или Python?Более конкретно, из таблицы выше я бы вернул

purchased    added

    1          1
   null        2

1 Ответ

0 голосов
/ 18 сентября 2018

Предполагая, что id идентифицирует сеанс.Это находит сеансы, которые выполняют все три:

select id
from t
where (event = 'click' and category = 'b') and
      (event = 'cart_add') and
      (event = 'purchase')
group by id
having count(distinct event) = 3;

Если вам нужно, чтобы покупка была позже двух других, то добавьте:

max(case when event = 'purchase' then request end) > greatest(min(case when event = 'click' then request end), min(case when event = 'card_add' then request end))
...