Với PostgreSQL 9.4, hiện đã có hỗ trợ gốc cho các phân vị phần trăm, được triển khai trong Các hàm tổng hợp được đặt theo thứ tự :
percentile_cont(fractions) WITHIN GROUP (ORDER BY sort_expression)
phân vị liên tục:trả về giá trị tương ứng với phân số được chỉ định trong thứ tự, nội suy giữa các mục đầu vào liền kề nếu cần
percentile_cont(fractions) WITHIN GROUP (ORDER BY sort_expression)
nhiều phân vị liên tục:trả về một mảng kết quả phù hợp với hình dạng của tham số phân số, với mỗi phần tử không rỗng được đặt ở vị trí của giá trị tương ứng với phân vị đó
Xem tài liệu để biết thêm chi tiết:http://www.postgresql.org/docs/current/static/functions-aggregate.html
và xem tại đây để biết một số ví dụ:https://github.com/michaelpq/michaelpq.github.io/blob/master/_posts/2014-02-27-postgres-9-4-feature-highlight-within-group.markdown
CREATE TABLE aa AS SELECT generate_series(1,20) AS a;
--SELECT 20
WITH subset AS (
SELECT a AS val,
ntile(4) OVER (ORDER BY a) AS tile
FROM aa
)
SELECT tile, max(val)
FROM subset GROUP BY tile ORDER BY tile;
tile | max
------+-----
1 | 5
2 | 10
3 | 15
4 | 20
(4 rows)