Значение оценки правила 80% в PL / SQL - PullRequest
2 голосов
/ 26 мая 2011

Предположим диапазон значений, вставленных в таблицу схемы, и в конце месяца я хочу применить для этих записей (т.е. 2500 строк = числовые значения) алгоритм: отсортировать значения по убыванию (от наименьшего до наибольшего значения) а затем найдите значение 80% отсортированного столбца.

В моем примере, если каждая строка увеличивается на одну, начиная с 1, значение 80% будет равно значению строки 2000 = (= 2500-2500 * 20/100). Этот алгоритм должен быть реализован в процедуре, где число строк не является постоянным, например, он может варьироваться от 2500 до 1 000 000 в месяц

Ответы [ 2 ]

3 голосов
/ 26 мая 2011

Подсказка: этого можно добиться с помощью кумулятивных агрегатных функций Oracle.Например, предположим, что ваша таблица выглядит следующим образом:

     MY_TABLE
+-----+----------+
| ID  | QUANTITY |
+-----+----------+
|  A  |    1     |
|  B  |    2     |
|  C  |    3     |
|  D  |    4     |
|  E  |    5     |
|  F  |    6     |
|  G  |    7     |
|  H  |    8     |
|  I  |    9     |
|  J  |   10     |
+-----+----------+

В каждой строке вы можете суммировать количество, используя пока это:*

Надеюсь, это поможет в вашей работе.

2 голосов
/ 26 мая 2011

Напишите запрос, используя функцию процентиль , чтобы решить вашу проблему.Похоже, он делает то, что вы хотите.

Примером будет

select percentile_disc(0.8) within group (order by the_value)
from my_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...