我很难考虑清楚。我有大约 300 万行的列:用户 ID、用户在购买前最后进入的频道以及他们的订单顺序。我想找到一种方法来计算基于渠道遵循相同订单序列的用户数量。是否有某种功能可以帮助我完成此任务?
前任。TPA --> TPA --> 电子邮件
有多少人遵循这个顺序?
我很难考虑清楚。我有大约 300 万行的列:用户 ID、用户在购买前最后进入的频道以及他们的订单顺序。我想找到一种方法来计算基于渠道遵循相同订单序列的用户数量。是否有某种功能可以帮助我完成此任务?
前任。TPA --> TPA --> 电子邮件
有多少人遵循这个顺序?
您可以使用以下方法获取序列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 函数。
如果您只需要计数它们,您可以先将它们分组,然后执行计数。事实上,一旦分组,你可以做任何你想做的事......
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
希望这对你有用。:)