Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Анализ последовательностей / 4 сообщений из 4, страница 1 из 1
18.09.2004, 20:48
    #32701001
[C6] LEXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ последовательностей
Подскажите, может кто сталкивался с движками баз данных с такими возможностями, как построение запросов не только на обычной реляционной идеологии, но и используя значения одного и того же поля в разных записях как операбельные параметры? Поясню на примере.
Обычная идеология SQL позволяет использовать выборки записей по критериям, и довольно несложные операции с ними + вариации.
А вот допустим есть таблица
events:

id - индекс.
timestamp - время.
actionid - код некоего события.
userid - код пользователя, совершившего событие.

И мне надо выбирать, например, МАКСИМАЛЬНОЕ ВРЕМЯ между двумя одинаковыми событиями одного и того же user'а.

Решения по реорганизации структуры таблицы - это не выгодно, т.к. всегда можно найти вариант запросов не "вдоль, а "поперёк" структуры записей", для которого придётся снова менять структуру вспомогательных таблиц.

Пока у меня вариант - интересующие характеристики считаются параллельно с добавлением записей и пишутся в отдельную таблицу. Если надо ЕЩЁ ЧТО-ТО посчитать, то приходится пересчитывать кучу данных... Это не есть гут.

Хочется верить, что умные люди уже сталкивались с такими задачами и что-то уже есть, а я просто не знаю... Подскажите, плиз, есть ли такие решения?
Спасибо.
...
Рейтинг: 0 / 0
20.09.2004, 09:09
    #32701530
linke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ последовательностей
Хранимые процедуры и тригеры чем не устраивают?
...
Рейтинг: 0 / 0
20.09.2004, 10:01
    #32701595
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ последовательностей
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
 -- Sybase ASE 12.5 for Windows 

create table tmp_test
	(
	id numeric( 3 ) identity,
	time_stamp smalldatetime,
	action_id int,
	usr_id int
	)
go

insert into
	tmp_test
	(
	time_stamp,
	action_id,
	usr_id
	)
values
	(
	'20040101',
	 1 ,
	 1 
	)
insert into
	tmp_test
	(
	time_stamp,
	action_id,
	usr_id
	)
values
	(
	'20040201',
	 1 ,
	 1 
	)
insert into
	tmp_test
	(
	time_stamp,
	action_id,
	usr_id
	)
values
	(
	'20040110',
	 2 ,
	 1 
	)
insert into
	tmp_test
	(
	time_stamp,
	action_id,
	usr_id
	)
values
	(
	'20040111',
	 2 ,
	 1 
	)
insert into
	tmp_test
	(
	time_stamp,
	action_id,
	usr_id
	)
values
	(
	'20040104',
	 1 ,
	 2 
	)
insert into
	tmp_test
	(
	time_stamp,
	action_id,
	usr_id
	)
values
	(
	'20040110',
	 1 ,
	 2 
	)
insert into
	tmp_test
	(
	time_stamp,
	action_id,
	usr_id
	)
values
	(
	'20040201',
	 1 ,
	 2 
	)
go

select
	t1.usr_id,
	t1.action_id,
	min(t1.time_stamp) as min_time_stamp,
	max(t2.time_stamp) as max_time_stamp,
	datediff(dd,min(t1.time_stamp),max(t2.time_stamp)) as max_time_day
from
	tmp_test t1
	inner join
		tmp_test t2
		on
		t1.usr_id = t2.usr_id
		and
		t1.action_id = t2.action_id
group by
	t1.usr_id,
	t1.action_id
go

 --RESULTS 
usr_id	action_id	min_time_stamp	max_time_stamp	max_time_day
 1 	 1 	 2004 - 01 - 01   00 : 00 : 00 	 2004 - 02 - 01   00 : 00 : 00 	 31 
 1 	 2 	 2004 - 01 - 10   00 : 00 : 00 	 2004 - 01 - 11   00 : 00 : 00 	 1 
 2 	 1 	 2004 - 01 - 04   00 : 00 : 00 	 2004 - 02 - 01   00 : 00 : 00 	 28 
...
Рейтинг: 0 / 0
20.09.2004, 12:00
    #32701929
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ последовательностей
[quot [C6] LEXX]И мне надо выбирать, например, МАКСИМАЛЬНОЕ ВРЕМЯ между двумя одинаковыми событиями одного и того же user'а.[/quot]И чем SQL не угодил?
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Анализ последовательностей / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]