站点
假设我有一个网站,页面如:
- 主页
- 第A页
- 第B页
- 第C页
- 签出
用户旅程路径
因此,一些可行的用户旅程路径可能是:
- 主页->页面A->页面B->页面C->签出
- 主页->页面A->第B页
当前架构
如果SQL中的表webPages看起来像这个
userid | beforePage | afterPage|
---|---|---|
1 | 主页 | 第A页|
1 | 第A页 | 第B页|
1 | 第B页 | 第C页|
1 | 第C页 | 结账|
2 | 主页 | 第A页 |
2 | 第A页 | 第B页
分配一个序列号和聚合。需要注意的是,您需要一个列来指定排序:
select userid,
max(case when seqnum = 1 then beforepage end) as beforepage,
max(case when seqnum = 1 then afterpage end) as afterpage_1,
max(case when seqnum = 2 then afterpage end) as afterpage_2,
max(case when seqnum = 3 then afterpage end) as afterpage_3
from (select t.*,
row_number() over (partition by userid order by <ordering col>) as seqnum
from t
) t
group by userid;