Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 отображения результата статистики  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
собираю такую статистику:
id сессии / время/ id действия, т.е. грубо говоря чего делал пользователь зайдя в систему и в каком порядке.

хочу вычислить наиболее часто распространенные "комбинации действий" в таком виде:

действия (строка) кол-во
------------------------------ | -------
id_action(1), .. , id_action(N1) | 15
id_action(1), .. , id_action(N2) | 12
..
id_action(1), .. , id_action(N2) | 1
...

мозги в трубочку сворачиваются, может кто делал чего- нибудь подобное? поделитесь?
26 ноя 09, 16:08    [7983453]     Ответить | Цитировать Сообщить модератору
 Re: отображения результата статистики  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
в MSSQL 2к сижу.
26 ноя 09, 16:10    [7983471]     Ответить | Цитировать Сообщить модератору
 Re: отображения результата статистики  [new]
caper
Member

Откуда: Москва
Сообщений: 418
а по какому признаку вы собираете действия в комбинации?
26 ноя 09, 16:28    [7983604]     Ответить | Цитировать Сообщить модератору
 Re: отображения результата статистики  [new]
Glory
Member

Откуда:
Сообщений: 104760
А сколько комбинаций в последовательности действий 1,1,1,1,1 ?
26 ноя 09, 16:33    [7983658]     Ответить | Цитировать Сообщить модератору
 Re: отображения результата статистики  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
приведу пример тогда =) для наглядности:

table taction
(id int indetity(1,1),
name varchar)

table tsession
(id int identity(1,1),
uid int,
dt_begin, dt_end datetime)

table tlog
(dt datetime,
aid int,
sid int)

taction:

id | name
--------------
1 | syslogon
2 | open news
3 | open mail
4 | create mail
5 | open calendar
6 | syslogout


tsession думаю можно и так представить,

и наконец tlog:

dt aid sid
------------------------------------------
26.11.2009 16:33:16 1 1
26.11.2009 16:33:17 2 1
26.11.2009 16:33:18 3 1
26.11.2009 16:33:19 5 1
26.11.2009 16:33:20 6 1

26.11.2009 16:35:16 1 2
26.11.2009 16:35:17 5 2
26.11.2009 16:35:18 3 2
26.11.2009 16:35:19 4 2
26.11.2009 16:35:21 5 2
26.11.2009 16:35:22 3 2
26.11.2009 16:35:23 4 2
26.11.2009 16:35:24 6 2

ну соответственно по этой статистике результат бы я получил такой:


aid string, count
--------------------
1-2, 1
1-5, 1
2-3, 1
3-4, 2
3-5, 1
4-5, 1
4-6, 1
5-6, 1
5-3, 2

1-2-3, 1
1-5-3, 1
2-3-5, 1
3-5-6, 1
3-4-5, 1
3-4-6, 1
4-5-3, 1
5-3-4, 2

1-2-3-5, 1
1-5-3-4, 1
2-3-5-6, 1
3-4-5-3, 1
4-5-3-4, 1
5-3-4-6, 1

1-2-3-5-6, 1
1-5-3-4-5, 1
3-4-5-3-4, 1
4-5-3-4-6, 1

если ничего не упустил!
26 ноя 09, 17:03    [7983898]     Ответить | Цитировать Сообщить модератору
 Re: отображения результата статистики  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
ну я вот рассуждаю.


1. скорее всего это должен быть цикл
2. цикл по кол-ву элементов в последовательности,  2.. n, 
 n = максимальное значение count из
 select count(*) from  tlog group by sid
3. перебирать все комбинации, которые могут быть, но как
мне проверять что комбинация a-b-c  имеет место быть в логах? 

**** **:**:01 a
**** **:**:04 b
**** **:**:07 c

как вот этот факт установить? то что между a и b  нет еще записи, то что они следуют друг за другом?

вводить поле id уникальное в таблицу логов - мне кажется можно иначе.
26 ноя 09, 17:47    [7984144]     Ответить | Цитировать Сообщить модератору
 Re: отображения результата статистики  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
может создать временную таблицу и пихать туда по N записей упорядоченных по времени, каждый раз очищая её, и смотреть какие aid там выстраиваются?
27 ноя 09, 10:08    [7985788]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить