В Oracle найдите число, которое больше 80% набора чисел - PullRequest
4 голосов
/ 22 ноября 2010

Предположим, у меня есть таблица со столбцом целых чисел в Oracle. Есть много строк; где-то миллионами. Я хочу написать запрос, который возвращает мне целое число, превышающее 80% всех чисел в таблице. Как лучше всего подойти к этому?

Если это имеет значение, это Oracle 10g r1.

Ответы [ 2 ]

8 голосов
/ 22 ноября 2010

Звучит так, будто вы хотите использовать функцию PERCENTILE_DISC , если вы хотите фактическое значение из набора, или PERCENTILE_CONT , если вы хотите интерполированное значение для определенного процентиля, скажем, 80%:

SELECT PERCENTILE_DISC(0.8) 
WITHIN GROUP(ORDER BY integer_col ASC) 
FROM some_table

EDIT

Если вы используете PERCENTILE_DISC, он вернет фактическое значение из набора данных, поэтому, если вы хотите большее значение, вам нужноувеличить его на 1 (для целочисленного столбца).

1 голос
/ 22 ноября 2010

Я думаю, вы могли бы использовать функцию NTILE , чтобы разделить входные данные на 5 сегментов, а затем выбрать MIN (столбец) из верхнего сегмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...