0
我需要在Netezza中實現以下PostgreSQL代碼。這基本上計算離散值的直方圖數據的百分位數。 Postgres的問題被問及並回答了here。來自離散值的直方圖數據的百分位數
CREATE TABLE grades
AS
SELECT name, exams, grade_poor, grade_fair, grade_good, grade_vgood
FROM (VALUES
('arun' , 8 , 1 , 4 , 2 , 1),
('neha' , 10 , 3 , 2 , 1 , 4),
('ram' , 5 , 1 , 1 , 3 , 0),
('radha' , 8 , 0 , 3 , 1 , 4)
) AS t(name,exams,grade_poor,grade_fair,grade_good,grade_vgood);
SELECT name, percentile_disc(0.5) WITHIN GROUP (ORDER BY gs1.x)
FROM (
SELECT name,
ARRAY[grade_poor, grade_fair, grade_good, grade_vgood]
FROM grades
) AS t(name, grades)
CROSS JOIN LATERAL generate_series(1,4) AS gs1(x)
CROSS JOIN LATERAL generate_series(1,grades[gs1.x]) AS gs2(x)
GROUP BY name ORDER BY name;
代碼可以跑here
得到的輸出
name | percentile_disc
-------+-----------------
arun | 2
neha | 2
radha | 3
ram | 3
這爲等級「數」的第50個百分點,但在這個問題的想法是有品位「價值」的第50個百分點 - 看到問題的輸出。 – user3206440