Возьмите таблицу SQL со следующими 3 полями:
Id,TimeStamp,Item,UserId
Я хотел бы определить наиболее распространенные последовательности Item
для UserId
в сеансе.Сеанс будет просто определяться пороговым значением времени (т. Е. Если в течение X минут не будет записей, любые будущие записи будут сгруппированы в новый сеанс).
В идеале последовательность элементов может иметь виднечеткой группировки, в которой одно или два различия в последовательности все еще можно считать одинаковыми и сгруппированными вместе.
Кто-нибудь знает, как можно решить эту проблему в SQL?
Обновление
Чтобы уточнить, давайте представим, что Предметы - это островки продуктового магазина.И у меня есть месяц людей, посещающих продуктовый магазин.Основной вопрос заключается в том, какие острова используют люди и какой порядок.Они чаще всего ходят по островам 1,2,3
или 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)*/