-1

我很难考虑清楚。我有大约 300 万行的列:用户 ID、用户在购买前最后进入的频道以及他们的订单顺序。我想找到一种方法来计算基于渠道遵循相同订单序列的用户数量。是否有某种功能可以帮助我完成此任务?

前任。TPA --> TPA --> 电子邮件

  • 有多少人遵循这个顺序?

在此处输入图像描述

4

2 回答 2

2

您可以使用以下方法获取序列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 函数。

于 2020-01-07T20:27:46.047 回答
0

如果您只需要计数它们,您可以先将它们分组,然后执行计数。事实上,一旦分组,你可以做任何你想做的事......

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

希望这对你有用。:)

于 2020-01-07T20:25:59.397 回答