Sql server 如何找到遵循相同顺序的用户数?
我很难把这件事想清楚。我有大约300万行和列:userID,用户在购买前最后一次进入的频道,以及他们的订单顺序。我想找到一种方法,根据频道统计遵循相同顺序的用户数。是否有某种功能可以帮助我完成此任务 例如,TPA-->TPA-->电子邮件Sql server 如何找到遵循相同顺序的用户数?,sql-server,tsql,Sql Server,Tsql,我很难把这件事想清楚。我有大约300万行和列:userID,用户在购买前最后一次进入的频道,以及他们的订单顺序。我想找到一种方法,根据频道统计遵循相同顺序的用户数。是否有某种功能可以帮助我完成此任务 例如,TPA-->TPA-->电子邮件 有多少人遵循这个顺序 如果只需要对它们进行计数,可以先对它们进行分组,然后进行计数。事实上,一旦分组,你可以做任何你喜欢的事 WITH dte as ( SELECT distinct userid, ( SELECT
- 有多少人遵循这个顺序
如果只需要对它们进行计数,可以先对它们进行分组,然后进行计数。事实上,一旦分组,你可以做任何你喜欢的事
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
希望这对你有用。:) 您可以使用
string\u agg()
获取序列:
string\u agg()
是一个相对较新的函数。在旧版本的SQL Server中,您可能会使用XML函数
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;