วิธีการทั่วไปที่รวดเร็วในการคำนวณเปอร์เซ็นต์


9

ฉันต้องการค้นหา n> 1 เปอร์เซนต์ของคอลัมน์ที่ไม่เรียงลำดับใน PostgreSQL ตัวอย่างเช่นเปอร์เซ็นไทล์ที่ 20, 40, 60, 80 และ 100

วิธีแก้ปัญหาที่ชัดเจนคือการนับและจัดเรียงคอลัมน์แล้วดู แต่ฉันหวังว่าจะได้คำตอบที่ดีกว่า ความคิดใด ๆ

PS ฉันพบวิธีแก้ปัญหาที่ดีสำหรับ 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.