Sql server 如何找到遵循相同顺序的用户数?

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

我很难把这件事想清楚。我有大约300万行和列:userID,用户在购买前最后一次进入的频道,以及他们的订单顺序。我想找到一种方法,根据频道统计遵循相同顺序的用户数。是否有某种功能可以帮助我完成此任务

例如,TPA-->TPA-->电子邮件

  • 有多少人遵循这个顺序


如果只需要对它们进行计数,可以先对它们进行分组,然后进行计数。事实上,一旦分组,你可以做任何你喜欢的事

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;