Как узнать количество пользователей, которые следуют той же последовательности заказа? - PullRequest
0 голосов
/ 07 января 2020

Мне трудно все обдумать. У меня около 3 миллионов строк со столбцами: userID, Channel, с которого пользователь последний раз заходил перед покупкой, и последовательность их заказов. Я хотел бы найти способ подсчета пользователей, которые следуют тем же последовательностям заказа на основе канала. Есть ли определенная функция, которая может помочь мне выполнить это?

Пример. TPA -> TPA -> Email

  • сколько людей следуют этой последовательности?

enter image description here

Ответы [ 2 ]

2 голосов
/ 07 января 2020

Вы можете получить последовательности, используя string_agg():

select path, count(*) as num_users
from (select user_id,
             string_agg(channel, '-->') within group (order by sequence) as path
      from t
      group b user_id
     ) u
group by path
order by num_users desc;

string_agg() - относительно новая функция. В более старых версиях SQL Server вы, вероятно, использовали бы функции XML.

0 голосов
/ 07 января 2020

Если вам просто нужно их посчитать, вы можете сначала сгруппировать их, а затем выполнить подсчет. На самом деле, сгруппировавшись, вы можете делать все, что захотите ...

WITH dte as (
  SELECT distinct
    userid,
    (
        SELECT Channel+'>'
        FROM MyTable t2
        WHERE t2.userid= t.userid
        FOR XML PATH('')
    ) Concatenated
  FROM MyTable t
)
SELECT whatever
FROM dte

Надеюсь, это сработает для вас. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...