Yüzdelikleri hesaplamak için hızlı genel yöntem


9

PostgreSQL'de sıralanmamış bir sütunun n> 1 yüzdelik dilimini bulmak istiyorum. Örneğin 20., 40., 60., 80. ve 100. persentil.

Bariz bir çözüm, sütunu sayıp sıralamak ve daha sonra bir göz atmaktır, ancak daha iyi bir çözüm bekliyorum. Herhangi bir fikir?

PS MySQL için iyi bir çözüm buldum ancak psql'ye çeviremiyorum


2
Cume_dist () gibi pencereleme işlevlerini düşündünüz mü ?
Jack diyor ki topanswers.xyz

Postgres'in PERCENT_RANK ()
Philᵀᴹ

Yanıtlar:


12

Aşağıdaki ile geldim:

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;

Kullanılarak bölünen her grubun maksimum sayısını seçer ntile().

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.