Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Oracle + Статистика  [new]
HOME_X
Member

Откуда:
Сообщений: 2539
Творческого дня уважаемые господа !

Подскажите пожалуйста как решить проблему
Имею таблицу
ID      OKK
1            10
1        50001            12

2	  10	
2            12
2              8
2      10000
2              9
2            11
2            10 

Необходимо осуществить сглаживание пиков в вариационном ряде
(т.е. величина 10000 не есть системной для группы ID=2)
В качестве механизма сглаживания применен метод итерационной средней.

Алгоритм обработки группы ID=2
- определяем среднее значение (10+12+10000….+10)/7 = 1437.14
- определяем среднеквадратичное отклонение
КОРЕНЬ(((1437.14-10)**2 + (1437.14-12)**2 + ……..)/7) = 3495.77
- заменяем все значения группы ID=2 на СРЕДНУЮ величину, если они
БОЛЬШЕ среднего значения + значение квад.ошибки 1437.14+3495.77 = 4932.91
- заменена величина в 10000 тыс. на 1437.14

Новый ряд распределения
2	10	
2          12
2            8
2      1437.14
2            9
2          11
2          10 

Повторяем итерацию
- среднее значение нового ряда = 213.87
- средне квадратичн отклонение = 499.39
- меняем 1437.14 на 213.87 так оно больше 213.87+499.39

Новый ряд распределения
2	10	
2          12
2            8
2      213.87
2            9
2          11
2          10 

Повторяем итерацию
- среднее значение нового ряда = 39.12
- средне квадратичн отклонение = 71.35
- меняем 213.87 на 39.12 так оно больше 39.12+71.35

Новый ряд распределения
2	10	
2          12
2            8
2      39.12
2            9
2          11
2          10 

Повторяем итерацию
- среднее значение нового ряда = 14.16
- средне квадратичн отклонение = 10.26
- меняем 39.12 на 14.16 так оно больше 14.16+10.26

Новый ряд распределения
2	10	
2          12
2            8
2      14.16
2            9
2          11
2          10 

Расчет ПРЕКРАЩЕН так как средне квадратичное отклонение
10.26 меньше среднего значения 14.16.

Но в каждом группе ID=2 (в каждом partition ID) кол-во итераций
будет разное.
Как написать такой запрос ?
PLSQL привлекать на хотелось бы….!!!!!! – таблица достигает 15-18
млн. записей., каждый partition от 50 до 280 тыс.

Благодарен и признателен !
16 ноя 10, 15:44    [9788435]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
collow
Member

Откуда:
Сообщений: 324
А в чём проблема с PL/SQL то? Партиций не настолько много, штук 100 всего.
16 ноя 10, 16:17    [9788835]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
HOME_X
Member

Откуда:
Сообщений: 2539
collow,

Да, надеялся на решения ядра системы.
Надстройка - всегда тормоз
16 ноя 10, 17:45    [9789832]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
HOME_X
Творческого дня уважаемые господа !

Подскажите пожалуйста как решить проблему
Имею таблицу
ID      OKK
1            10
1        50001            12

2	  10	
2            12
2              8
2      10000
2              9
2            11
2            10 


Хм, а что должно получиться если такие данные:

1 0
1 10000
1 10000
1 10000
1 10000
1 10000
1 10000
16 ноя 10, 17:54    [9789946]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
collow
Member

Откуда:
Сообщений: 324
Режим - только readonly ?
16 ноя 10, 18:40    [9790308]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
HOME_X
Member

Откуда:
Сообщений: 2539
Доброго дня уважаемый _Nikotin,

В данном случае
среднее равно 8571
квадрат ошибка 3499
ошибка меньше среднего - РАСЧЕТ ПРЕКРАЩЕН замены не производим..

Не ясно - как организовать цикл для каждого PARTITION.
иттераций может быть любое количество, а также и их отсутствие
(как в конкретном пример)
17 ноя 10, 11:53    [9793499]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
HOME_X
Member

Откуда:
Сообщений: 2539
Доброго дня уважаемый collow !

Режим - только readonly ?

Вопрос не понят ...? уточните !

В данной транзакции делаю ТОЛЬКО select на выходе
получаем сглаженные значение тренда.
Реальной замены данных в таблице не производим.....
17 ноя 10, 11:56    [9793527]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
collow
Member

Откуда:
Сообщений: 324
Собственно в этом и был вопрос. Я бы делал pl/sql блоком с циклом на партиции, внутри цикл с апдейтом таблицы до получения sql%rowcount = 0.
Но одним селектом.. На мой взгляд, это будет слишком ресурсозатратно, чем с цепочкой апдейтов.
Ограничение принципиальное?
17 ноя 10, 12:45    [9794051]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
collow
Member

Откуда:
Сообщений: 324
Одним селектом можно попробовать через новый механизм рекурсивных селектов в 11.2, тут даже вроде бы connect by не поможет.
17 ноя 10, 12:47    [9794077]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
collow
Member

Откуда:
Сообщений: 324
Еще можно заморочиться на написание своей аналитической функции
17 ноя 10, 12:47    [9794085]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
а ещё PIPELINED PARALLEL_ENABLE (PARTITION BY ...)
17 ноя 10, 13:06    [9794262]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
HOME_X
Member

Откуда:
Сообщений: 2539
Т.е. все решения возможны через код PLSQL
Верно ли Вас понял ?
17 ноя 10, 13:43    [9794689]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
HOME_X
Т.е. все решения возможны через код PLSQL
Верно ли Вас понял ?

Можно попробовать MODEL прикрутить, но лучше PLSQL, либо C-JAVA для таких тяжеловесных вычислений
17 ноя 10, 13:51    [9794786]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + Статистика  [new]
collow
Member

Откуда:
Сообщений: 324
Если речь идёт о рабочем процессе - то не до странных ограничений. Если это академическая задача, то многоэтажный запрос написать можно, но использовать - никогда.
17 ноя 10, 14:00    [9794906]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить