Sql server 2008 路径分析web数据
我正在对我的原始网络分析数据进行一些分析,并试图在我的网站上找到常见的购物路径。我已将所有数据迁移到一个整洁的表/脚本中,如下所示:Sql server 2008 路径分析web数据,sql-server-2008,web-analytics,pathing,Sql Server 2008,Web Analytics,Pathing,我正在对我的原始网络分析数据进行一些分析,并试图在我的网站上找到常见的购物路径。我已将所有数据迁移到一个整洁的表/脚本中,如下所示: [订单ID]:非唯一VARCHAR(A1000、A1001等) [访问路径中的路径]:数字(1,2,3,4,5等) [剩余访问量]:数字(1,2,3,4,5等) [频道]:VARCHAR(直接/电子邮件/显示/付费搜索/免费搜索) 我希望得到的是路径数,因此,例如,使用just ORDER_ID ABC123,我可能会得到以下结果: 计数/访问路径中的路径1/访问
CREATE TABLE [dbo].[DummyPaths](
[ORDER_ID] [varchar](64) NULL,
[VISIT_IN_PATH] [bigint] NULL,
[VISIT_REMAINING] [bigint] NULL,
[MARKETING_CHANNEL] [varchar](256) NULL
)
GO
INSERT INTO DummyPaths (ORDER_ID,VISIT_IN_PATH,VISIT_REMAINING,MARKETING_CHANNEL)
VALUES ('ABC123','1','5','FREE SEARCH'),
('ABC123','2','4','FREE SEARCH'),
('ABC123','3','3','DIRECT'),
('ABC123','4','2','FREE SEARCH'),
('ABC123','5','1','DIRECT'),
('ABC124','1','5','OTHER REFERRAL'),
('ABC124','2','4','OTHER REFERRAL'),
('ABC124','3','3','OTHER REFERRAL'),
('ABC124','4','2','OTHER REFERRAL'),
('ABC124','5','1','OTHER REFERRAL'),
('ABC125','1','5','DIRECT'),
('ABC125','2','4','AFFILIATE'),
('ABC125','3','3','AFFILIATE'),
('ABC125','4','2','AFFILIATE'),
('ABC125','5','1','AFFILIATE'),
('ABC126','1','5','EMAIL'),
('ABC126','2','4','EMAIL'),
('ABC126','3','3','DIRECT'),
('ABC126','4','2','DIRECT'),
('ABC126','5','1','DIRECT'),
('ABC127','1','5','FREE SEARCH'),
('ABC127','2','4','DIRECT'),
('ABC127','3','3','DIRECT'),
('ABC127','4','2','FREE SEARCH'),
('ABC127','5','1','DIRECT'),
('ABC128','1','5','DIRECT'),
('ABC128','2','4','EMAIL'),
('ABC128','3','3','EMAIL'),
('ABC128','4','2','EMAIL'),
('ABC128','5','1','DIRECT'),
('ABC129','1','5','FREE SEARCH'),
('ABC129','2','4','FREE SEARCH'),
('ABC129','3','3','FREE SEARCH'),
('ABC129','4','2','FREE SEARCH'),
('ABC129','5','1','DIRECT')
我将非常感谢任何帮助
谢谢我一直在玩这个游戏,发现以下方法很有效:
with dataset
as
(
select ORDER_ID
,[1] as 'VISIT1'
,[2] as 'VISIT2'
,[3] as 'VISIT3'
,[4] as 'VISIT4'
,[5] as 'VISIT5'
from
(
select order_id, visit_in_path, MARKETING_CHANNEL
from dummypaths
) x
pivot
(
min(MARKETING_CHANNEL)
for visit_in_path in ([1], [2], [3], [4], [5])
) p
)
select x.VISIT1
,x.VISIT2
,x.VISIT3
,x.VISIT4
,x.VISIT5
,MAX(dupes) as 'count'
from
(
select
VISIT1
,VISIT2
,VISIT3
,VISIT4
,VISIT5
,ROW_NUMBER() over
(partition by VISIT1
,VISIT2
,VISIT3
,VISIT4
,VISIT5
order by VISIT1 asc
) as 'dupes'
from dataset
) x
group by x.VISIT1
,x.VISIT2
,x.VISIT3
,x.VISIT4
,x.VISIT5