获取一个包含以下 3 个字段的 SQL 表:
Id,TimeStamp,Item,UserId
我想确定最常见的序列Item
for a UserId
在一次会议中。会话将简单地由时间阈值来定义(即,如果 X 分钟内没有完整的条目,则任何未来的条目将被分组到新会话中)。
理想情况下,项目序列可以具有某种模糊分组,其中序列中的一两个差异仍然可以被视为相同并分组在一起。
有人知道我如何在 SQL 中解决这个问题吗?
Update:
为了澄清起见,我们假设这些物品是杂货店的岛屿。我有一个月的人去杂货店。基本问题是人们使用哪些岛屿以及它们的顺序。他们去岛屿吗1,2,3
or 1,2,1,3,4
最常用?
(现在我对我们网站上的用户路径感到好奇,但你知道,杂货店更加直观)。
更新2:
这是一个简单的案例:
CREATE Table #StoreActivity
(
id int,
CreationDate datetime ,
Isle int,
UserId int
)
Insert INTO #StoreActivity
Values
(1, CAST('12-1-2011 03:10:01' AS Datetime), 1, 2222),
(2, CAST('12-1-2011 03:10:07' AS Datetime), 1, 1111),
(3, CAST('12-1-2011 03:10:12' AS Datetime), 2, 2222),
(4, CAST('12-1-2011 04:10:01' AS Datetime), 1, 2222),
(5, CAST('12-1-2011 04:10:23' AS Datetime), 2, 2222)
Select * from #StoreActivity
DROP Table #StoreActivity
/* So with the above data, we have 2 sequences if we declare a session or visit dead if there is no activity for a minute : `1,2` (With a count of 2), and `1` (with a count of 1)*/