powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Какая аналитическая функция ?
7 сообщений из 7, страница 1 из 1
Какая аналитическая функция ?
    #39428333
Коноплио
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, подскажите, есть упорядоченный набор
Нужно найти колонку 3, это последовательные нруппы с S встречающиеся в последовательности.
1 A 0
2 S 1
3 S 1
4 A 0
5 S 2
6 S 2
7 A 0
8 S 3

Подскажите аналитич. функцию.
...
Рейтинг: 0 / 0
Какая аналитическая функция ?
    #39428339
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STFF start_of_group
...
Рейтинг: 0 / 0
Какая аналитическая функция ?
    #39428349
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коноплио,

FIRST
...
Рейтинг: 0 / 0
Какая аналитическая функция ?
    #39428370
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
магия
Код: plsql
1.
sum(case c2 when 'A' then 1 end)

...
Рейтинг: 0 / 0
Какая аналитическая функция ?
    #39428769
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коноплио,
Код: 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.
30.
31.
  1  with t(srt,val,g) as (
  2  select 1, 'A', 0 from dual union all
  3  select 2, 'S', 1 from dual union all
  4  select 3, 'S', 1 from dual union all
  5  select 4, 'A', 0 from dual union all
  6  select 5, 'S', 2 from dual union all
  7  select 6, 'S', 2 from dual union all
  8  select 7, 'A', 0 from dual union all
  9  select 8, 'S', 3 from dual
 10  )
 11  ,tt as (
 12  select
 13   t.*
 14  ,case when lag(val,1,'a') over (order by srt) <> 'S' and val='S' then 1 else 0 end f
 15  from t
 16  )
 17* select srt,val,decode(val,'S',sum(f) over (order by srt),0) g from tt
SQL> /

       SRT V          G
---------- - ----------
         1 A          0
         2 S          1
         3 S          1
         4 A          0
         5 S          2
         6 S          2
         7 A          0
         8 S          3

8 rows selected.



+ возможно и model/math_recognize

......
stax
...
Рейтинг: 0 / 0
Какая аналитическая функция ?
    #39428788
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..+ возможно и model/math_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.
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.
with t(srt,val) as (
  select 1, 'A' from dual union all
  select 2, 'S' from dual union all
  select 3, 'S' from dual union all
  select 4, 'A' from dual union all
  select 5, 'S' from dual union all
  select 6, 'S' from dual union all
  select 7, 'A' from dual union all
  select 8, 'S' from dual
 )
select  srt,
        val,
        case val when 'S' then g else 0 end g
  from  t
  match_recognize(
                  order by srt
                  measures
                    match_number() g
                    all rows per match
                    pattern(strt s+)
                    define
                      s as val = 'S'
                 )
/
       SRT V          G
---------- - ----------
         1 A          0
         2 S          1
         3 S          1
         4 A          0
         5 S          2
         6 S          2
         7 A          0
         8 S          3

8 rows selected.

with t(srt,val) as (
  select 1, 'A' from dual union all
  select 2, 'S' from dual union all
  select 3, 'S' from dual union all
  select 4, 'A' from dual union all
  select 5, 'S' from dual union all
  select 6, 'S' from dual union all
  select 7, 'A' from dual union all
  select 8, 'S' from dual
 )
select  srt,
        val,
        case val when 'S' then g else 0 end g
  from  t
  model
    dimension by(srt)
    measures(val,0 g)
    rules(
          g[any] order by srt = case
                                  when val[cv()] = 'S' and nvl(val[cv() - 1],'X') != 'S' then  nvl(g[cv() - 1],0) + 1
                                  else nvl(g[cv() - 1],0)
                                end
         )
/
 

       SRT V          G
---------- - ----------
         1 A          0
         2 S          1
         3 S          1
         4 A          0
         5 S          2
         6 S          2
         7 A          0
         8 S          3

8 rows selected.



SY.
...
Рейтинг: 0 / 0
Какая аналитическая функция ?
    #39429004
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

без case val when 'S' then g else 0 end g
сильно правила усложнятся?

.....
stax
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Какая аналитическая функция ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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