2013-08-07 2 views
1

Я использую percentile_cont, чтобы найти процентиль дистрибутива. Моя таблица:Percentile_cont/Oracle

Class_id RollNum Marks 
1    1  10 
1    2  12 
1    3  16 
1    4  08 
1    5  17 

Я использую запрос

SELECT class_id, 
     percentile_cont(0.05) within group (order by marks) as marksPerntl 
    from myTable group by class_id 

Теперь, можно также запросить номер рулона, который получил процентиль?

+0

Учитывая данные таблицы, которые вы отправили, ваш запрос не запускается - он не работает с ORA-00937: не является групповой функцией одной группы: SELECT class_id, percentile_cont (0.05) внутри группы (по методу Mark) в качестве метокPerntl from myTable'. [SQLFiddle здесь] (http://sqlfiddle.com/#!4/cdfbf/1). Измените свой вопрос и исправьте данные, разместите рабочий код или добавьте дополнительное объяснение. Благодарю. –

+0

привет отсутствовала группа по синтаксису. Я сейчас редактировал этот вопрос. благодаря – Monica

ответ

1

Функция PERCENTILE_CONT выполняет интерполяцию значений, давая вам значение Marks, которое попадет в 5% процентиля в вашем дистрибутиве.

выполнения запроса с указанными выше данными будет возвращать (SQLFiddle от комментариев @Bob Джарвиса):

| CLASS_ID | MARKSPERNTL | 
-------------------------- 
|  1 |   8.4 | 

Ваш набор данных не содержит ни одной строки, где Marks является 8.4. Следовательно, нет ни одного значения RollNum, которое получило бы процентиль.