Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке? / 6 сообщений из 6, страница 1 из 1
20.03.2018, 18:01
    #39617738
arelsom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке?
Вот к примеру в столбце phones хранятся такие данные:

9113333333[3],
9150000000[5], 9200000000[4], 9201111111[1],
9811111111[7], 9118888888[1],


Можно ли посчитать средние значения того, что в квадратных скобках?

!Через regexp_count не получается, так как стоит oracle 10g. Кто нибудь может помочь? Какой ещё способ для такого подсчёта?
...
Рейтинг: 0 / 0
20.03.2018, 18:07
    #39617740
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке?
arelsomКакой ещё способ для такого подсчёта?

Пойти к чудаку, сделавшему такую денормализованную БД, набить ему морду и заставить делать
эту работу ручками, чтобы в следующий раз неповадно было.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.03.2018, 18:20
    #39617746
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке?
Код: plsql
1.
2.
3.
4.
5.
select avg(v) over(partition by 1) as v_avg, t.*
  from (select val, to_number(substr(val, pos + 1, instr(val, ']', pos + 1, 1) - pos - 1)) as v, pos
          from (select val, instr(val, '[', 1, level) as pos
                  from (select '234234234234[45]564563453453[456]64356456[4567]75467546745[4567]65534534[5]' as val from dual) v
                connect by instr(val, '[', 1, level) > 0) vv) t
...
Рейтинг: 0 / 0
20.03.2018, 19:09
    #39617772
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке?
arelsomВот к примеру в столбце phones хранятся такие данные:

9113333333[3],
9150000000[5], 9200000000[4], 9201111111[1],
9811111111[7], 9118888888[1],


Можно ли посчитать средние значения того, что в квадратных скобках?

!Через regexp_count не получается, так как стоит oracle 10g. Кто нибудь может помочь? Какой ещё способ для такого подсчёта?
и на 10g можно например функцию написать например на pl/sql ,
только заранее подумайте над вопросом (и сформулируйте внятно ) что именно (и в каких скобках) вы хотите вычислять
...
Рейтинг: 0 / 0
21.03.2018, 09:30
    #39617957
Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке?
Код: 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.
with t(id, val) as
 (select 1, '9113333333[3]' from dual union all
  select 2, '9150000000[5], 9200000000[4,8], 9201111111[1]' from dual union all
  select 3, '9811111111[7,2], 9118888888[1]' from dual)   
select t3.*,
       avg(skob_val) over(partition by id) avg_by_id,
       avg(skob_val) over() avg_total
  from (select t2.*,
               to_number(substr(val, skob_pos1 + 1, skob_pos2 - skob_pos1 - 1)) skob_val
          from (select t.*,
                       level lvl,
                       instr(val, '[', 1, level) skob_pos1,
                       instr(val, ']', 1, level) skob_pos2
                  from t
                connect by prior id = id
                       and instr(val, '[', 1, level) > 0
                       and prior dbms_random.value is not null) t2) t3

ID VAL                                           LVL SKOB_POS1 SKOB_POS2 SKOB_VAL AVG_BY_ID  AVG_TOTAL
-- --------------------------------------------- --- --------- --------- -------- --------- ----------
 1 9113333333[3]                                   1        11        13        3         3 3,66666666
 2 9150000000[5], 9200000000[4,8], 9201111111[1]   1        11        13        5       3,6 3,66666666
 2 9150000000[5], 9200000000[4,8], 9201111111[1]   2        26        30      4,8       3,6 3,66666666
 2 9150000000[5], 9200000000[4,8], 9201111111[1]   3        43        45        1       3,6 3,66666666
 3 9811111111[7,2], 9118888888[1]                  1        11        15      7,2       4,1 3,66666666
 3 9811111111[7,2], 9118888888[1]                  2        28        30        1       4,1 3,66666666
...
Рейтинг: 0 / 0
21.03.2018, 10:19
    #39617994
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке?
Код: plsql
1.
2.
xmlquery(trim('+' from regexp_replace(строка, '^[^[]*\[|\][^[]*\[|][^[]*$','+')) returning content).getnumberval()
                       / regexp_count(строка, '\[\d*\]')
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли посчитать среднее значение чисел,находящихся в скобках и повторяющихся в строке? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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