Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Match_recognize ранжирование. / 25 сообщений из 50, страница 1 из 2
29.01.2020, 15:17
    #39919990
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Добрый день!

Пытаюсь ранжировать строки используя match_recognize.
Есть запрос:
Код: plsql
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.
with
  w_data as
  (
    select 1  as fk_id, 1  as fn_order, 'KEY_1' as fv_grp from dual union all
    select 2  as fk_id, 2  as fn_order, 'KEY_1' as fv_grp from dual union all
    select 3  as fk_id, 3  as fn_order, 'KEY_1' as fv_grp from dual union all
    select 4  as fk_id, 4  as fn_order, 'KEY_2' as fv_grp from dual union all
    select 5  as fk_id, 5  as fn_order, 'KEY_2' as fv_grp from dual union all
    select 6  as fk_id, 6  as fn_order, 'KEY_1' as fv_grp from dual union all
    select 7  as fk_id, 7  as fn_order, 'KEY_3' as fv_grp from dual union all
    select 8  as fk_id, 8  as fn_order, 'KEY_3' as fv_grp from dual union all
    select 9  as fk_id, 9  as fn_order, 'KEY_3' as fv_grp from dual union all
    select 10 as fk_id, 10 as fn_order, 'KEY_4' as fv_grp from dual
  )
select *
  from w_data match_recognize(
                order by fn_order
                measures --strt.fk_id as fk_id,
                         --strt.fv_grp as fv_grp,
                         match_number() as match_num,
                         classifier()   as clsf
                --one row per match
                all rows per match
                after match skip to last neq
                pattern (strt neq eq*)
                define eq  as eq.fv_grp   = prev(eq.fv_grp),
                       neq as neq.fv_grp != prev(neq.fv_grp)
              )
order by fk_id



Результатом его работы получается вот это:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FN_ORDER	MATCH_NUM	CLSF	FK_ID	FV_GRP
3	1	STRT	3	KEY_1
4	1	NEQ	4	KEY_2
5	1	EQ	5	KEY_2
5	2	STRT	5	KEY_2
6	2	NEQ	6	KEY_1
6	3	STRT	6	KEY_1
7	3	NEQ	7	KEY_3
8	3	EQ	8	KEY_3
9	3	EQ	9	KEY_3
9	4	STRT	9	KEY_3
10	4	NEQ	10	KEY_4

А ожидаемый результат такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CLSF	FK_ID	FV_GRP
NEQ		1	KEY_1
EQ		2	KEY_1
EQ		3	KEY_1
NEQ		4	KEY_2
EQ		5	KEY_2
NEQ		6	KEY_1
NEQ		7	KEY_3
EQ		8	KEY_3
EQ		9	KEY_3
NEQ		10	KEY_4

В поле clsf как раз и есть признак того новая группа начинается или нет.
Возможно я не прав и это сделать через match_recognize нельзя, тогда хотелось бы понять почему.
...
Рейтинг: 0 / 0
29.01.2020, 15:26
    #39919999
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
ожидаемый результат
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM

Чтобы повторить start_of_group ты перемудрил
...
Рейтинг: 0 / 0
29.01.2020, 15:31
    #39920003
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Это в целях изучения match_recognize.
...
Рейтинг: 0 / 0
29.01.2020, 15:33
    #39920008
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Elic,

что не так с вопросом?
Пример - есть, попытка решить - есть, вопрос - есть, искомый результат - есть, получаемый - есть? Что нужно добавить для лучшего понимания проблемы?
...
Рейтинг: 0 / 0
29.01.2020, 15:37
    #39920016
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
Это в целях изучения match_recognize.
Elic
перемудрил
Лишних две строчки и ещё одно слово.
...
Рейтинг: 0 / 0
29.01.2020, 15:39
    #39920018
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
что не так с вопросом?
Это не ранжирование, а разбиение на группы.
...
Рейтинг: 0 / 0
29.01.2020, 15:40
    #39920020
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Код: plsql
1.
2.
 --               after match skip to last neq
                pattern ((neq|eq)*)
...
Рейтинг: 0 / 0
29.01.2020, 15:44
    #39920025
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
andrey_anonymous,

Спасибо сработало.
...
Рейтинг: 0 / 0
29.01.2020, 15:45
    #39920026
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
andrey_anonymous
Код: plsql
1.
pattern ((neq|eq)*)

Неправильно.
...
Рейтинг: 0 / 0
29.01.2020, 15:48
    #39920029
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Elic,
А как правильно?
...
Рейтинг: 0 / 0
29.01.2020, 15:49
    #39920030
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
Код: plsql
1.
2.
3.
4.
                /*after match skip to last neq*/
                pattern (/*strt*/ neq eq*)
                define eq  as eq.fv_grp   = prev(eq.fv_grp)/*,
                       neq as neq.fv_grp != prev(neq.fv_grp)*/

...
Рейтинг: 0 / 0
29.01.2020, 15:50
    #39920032
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
"eq." тоже не обязательно.
...
Рейтинг: 0 / 0
29.01.2020, 15:55
    #39920036
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Elic
mibin
Код: plsql
1.
2.
3.
4.
                /*after match skip to last neq*/
                pattern (/*strt*/ neq eq*)
                define eq  as eq.fv_grp   = prev(eq.fv_grp)/*,
                       neq as neq.fv_grp != prev(neq.fv_grp)*/


Неправильно.
...
Рейтинг: 0 / 0
29.01.2020, 16:03
    #39920041
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
andrey_anonymous,

Тааак, это уже интересно :) а почему и как правильно всё-таки?
...
Рейтинг: 0 / 0
29.01.2020, 16:23
    #39920060
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
andrey_anonymous,

Тааак, это уже интересно :) а почему и как правильно всё-таки?

Не эквивалентно начальному условию в рамках троичной логики.
...
Рейтинг: 0 / 0
29.01.2020, 16:37
    #39920069
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
andrey_anonymous,

Тааак, это уже интересно :) а почему и как правильно всё-таки?
Если ты ожидаешь начало новой группы когда не равно, то можно заметить что альтернатива со звездой в решении анонимуса много чего определит в одну единственную группу.
...
Рейтинг: 0 / 0
29.01.2020, 16:38
    #39920071
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
а почему и как правильно всё-таки?
Сравни с ожиданием
...
Рейтинг: 0 / 0
29.01.2020, 16:39
    #39920072
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
andrey_anonymous
начальному условию в рамках троичной логики.
"Условие" высосано из пальца.
...
Рейтинг: 0 / 0
29.01.2020, 16:40
    #39920075
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
Тааак, это уже интересно :)
Плакать надо, что ты не сумел внятно задать вопрос.
...
Рейтинг: 0 / 0
29.01.2020, 16:59
    #39920084
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Elic
andrey_anonymous
начальному условию в рамках троичной логики.
"Условие" высосано из пальца.

ТС не задал ограничение not null и явно выписал два сравнения.
Ты в своем предложении по реализации данное ограничение никак не обосновал => неправ.
...
Рейтинг: 0 / 0
29.01.2020, 17:09
    #39920091
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Elic,

Скорблю...прости ради Бога...
...
Рейтинг: 0 / 0
29.01.2020, 17:34
    #39920115
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
Ну вроде благодаря вашей помощи я разобрался что такой match_recognize и как он работает :) и класс задач для него определил :) всем кто помогал +1 все кто хейтил -1
итого:
andrey_anonymous +1 к карме
Elic 0 - день как будто бы прошёл впустую :)

Всем спасибо :)
...
Рейтинг: 0 / 0
29.01.2020, 18:01
    #39920129
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
я разобрался что такой match_recognize и как он работает
Неужели правда понял что pattern matching реализован с помощью конечных автоматов?
mibin
и класс задач для него определил
И даже понял, что для твоей задачи нет острой необходимости использовать pattern matching и можно обойтись аналитикой?
mibin
день как будто бы прошёл впустую
С какой целью ты публикуешь на форуме свои недомыслия по поводу того как прошёл день у другого человека?



Элик радеет против скудоумия и косноязычия, и его реакция вполне понятна если ты сначал озвучиваешь
mibin
В поле clsf как раз и есть признак того новая группа начинается или нет.

а потом после получения двух решений которые по разному нумеруют группы вопрошаешь
mibin
как правильно всё-таки?


Правильно так как требуется, но чтоб понять как требуется надо внятно выражаться.
...
Рейтинг: 0 / 0
30.01.2020, 07:52
    #39920283
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
mibin
день как будто бы прошёл впустую
Для тебя, дурень?
...
Рейтинг: 0 / 0
30.01.2020, 08:12
    #39920287
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Match_recognize ранжирование.
andrey_anonymous
ТС не задал ограничение not null и явно выписал два сравнения.
Ты в своем предложении по реализации данное ограничение никак не обосновал => неправ.
ТС не умеет писать код. Делать выводы из его недокода при не озвученном словами желаемом результате - непрофессионально. Это в духе: чего-то увидел - то и пою. А потом собственно спетым аргументирую.
Все наличия/отсутствия ограничений ты выдумал себе сам. Но это, в какой-то степени, от того что автор - простофиля.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Match_recognize ранжирование. / 25 сообщений из 50, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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