백분위 수를 계산하는 빠른 일반적인 방법


9

PostgreSQL에서 정렬되지 않은 열의 n> 1 백분위 수를 찾고 싶습니다. 예를 들어 20, 40, 60, 80 및 100 백분위 수입니다.

확실한 해결책은 열을 계산하고 정렬 한 다음 모양을 만드는 것이지만 더 나은 솔루션을 기대하고 있습니다. 어떤 아이디어?

추신 : 나는 MySQL에 대한 좋은 해결책 을 찾았 지만 psql로 번역 할 수 없다


2
창 기능 (예 : cume_dist ()) 을 고려 했습니까 ?
잭 topanswers.xyz 시도라고

Postgres는 PERCENT_RANK ()를 가지고 있습니다
Philᵀᴹ

답변:


12

나는 다음을 생각해 냈습니다.

select cume, max(var) AS max_var
from (
   select var
        , ntile(5) over (order by var) as cume
   from table
   ) as tmp
group by cume
order by cume;

를 사용하여 나눈 각 그룹의 최대 값을 선택합니다 ntile().

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.