2017-12-29 2 views
0

저는 특정 백분위 수에서 행을 반환하려고 노력했지만 계속 잘못된 값을 얻고 있습니다. 데이터베이스에있는 SCORE의 값은 백분위 수를 계산해야하는 곳입니다.Vertica 데이터베이스에서 백분위 수를 계산하십시오.

이것은 내 검색어입니다. 상위 10 %에있는 모든 값을 얻으려고합니다.

이 쿼리를 실행하면 고정 값이 백분위 수이고 모든 행에서 동일합니다.

원하는 출력은 xth 백분위 수에 해당하는 모든 행을 반환해야합니다.

답변

2

나는 당신이 ntile()을 원한다고 생각 :

select i.* 
from (select i.*, ntile(10) over (order by x.score) as decile 
     from tblscores_info i 
    ) i 
where decile = 10; 

PERCENTILE() 기능

을 반환 한계점은 다음과 같습니다 당신이 상위 10 %를 원한다면

select i.*, ntile(10) over (order by x.score) as decile 
from tblscores_info i; 

는 다음 하위 쿼리를 사용 . NTILE()은 실제로 "백분위 수"를 지정합니다.

+0

매력처럼 작동합니다! 나는 전에 ntile을 본 적이 없다. –

관련 문제