次の結果セットを生成しました
"degree_easy","degree_hard","easy_percent","hard_percent"
1,5,0.166667,0.833333
1,5,0.166667,0.833333
1,6,0.142857,0.857143
1,8,0.111111,0.888889
上記の結果セットは、次のクエリから生成されます。
select * from (
select degree_one as degree_easy,
(degree_two + degree_three) as degree_hard,
(degree_one::real/(degree_one::real + degree_two::real + degree_three::real))
as easy_percent,
((degree_two::real + degree_three::real)/(degree_one::real + degree_two::real +
degree_three::real)) as hard_percent FROM recommendation_degree
) as dc
where dc.degree_easy >= 1 and dc.degree_hard >= 1
order by dc.easy_percent ASC, dc.hard_percent ASC
今私がやろうとしているのは、パーセンタイルを計算することです:
上記のどの列を使用するのがより理にかなっているかはわかりませんが、degree_easy と degree_hard を使用してパーセンタイルまたは少なくとも 1 つを計算したいと仮定するとntile
、postgres で関数を使用してこれを行うにはどうすればよいですか?
次のことを行う際のベストプラクティスは何ですか:
percentile, number_of_users
25, 4
50, 10
75, 20
99, 20