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

Пытаюсь ранжировать строки используя 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
Match_recognize ранжирование.
    #39919999
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mibin
ожидаемый результат
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM

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

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

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

Неправильно.
...
Рейтинг: 0 / 0
Match_recognize ранжирование.
    #39920029
mibin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
А как правильно?
...
Рейтинг: 0 / 0
Match_recognize ранжирование.
    #39920030
Фотография 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
Match_recognize ранжирование.
    #39920032
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"eq." тоже не обязательно.
...
Рейтинг: 0 / 0
Match_recognize ранжирование.
    #39920036
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Match_recognize ранжирование.
    #39920041
mibin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

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

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

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

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

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

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

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



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

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


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


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