Phương pháp chung nhanh để tính phần trăm


9

Tôi muốn tìm n> 1 phần trăm của một cột chưa được sắp xếp trong PostgreSQL. Ví dụ: phân vị thứ 20, 40, 60, 80 và 100.

Một giải pháp rõ ràng là đếm và sắp xếp cột và sau đó xem xét nhưng tôi hy vọng giải pháp tốt hơn. Có ý kiến ​​gì không?

PS Tôi đã tìm thấy một giải pháp tốt cho MySQL nhưng không thể dịch nó sang psql


2
Bạn đã xem xét các hàm cửa sổ , ví dụ cume_dist () chưa?
Jack nói hãy thử topanswers.xyz

Postgres có PERCENT_RANK ()
Phil

Câu trả lời:


12

Tôi đã đưa ra những điều sau đây:

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;

Nó chọn tối đa của mỗi nhóm được chia bằng cách sử dụng ntile().

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.