如何在 PostgreSQL 中获取超出集合的百分位数?
How to Get The Out-Of-Set Percentile In PostgreSQL?
给定一个表格
product1_id | score
A | 2
B | 3
和
product2_id | score
W | 1
X | 2
Y | 3
Z | 4
如何使用 PostgreSQL 找到 product2 分数中 product1 分数的异常百分位数以获得预期输出:
product1_id | score | out_of_set_percentile
A | 2 | 50
B | 3 | 75.
在 python 中,解决此问题的一种方法是合并表并应用 scipy.percentileofscore
:
from scipy import stats
stats.percentileofscore([1, 2, 3, 4], 3) # 75.0,
但我想要一种在 PostgreSQL 中本地执行此操作的方法
这里有一个暴力破解的方法:
select t1.product_id, t1.score,
avg( (t2.score <= t1.score)::int ) as ratio
from t1 cross join
t2
group by t1.product_id, t1.score;
给定一个表格
product1_id | score
A | 2
B | 3
和
product2_id | score
W | 1
X | 2
Y | 3
Z | 4
如何使用 PostgreSQL 找到 product2 分数中 product1 分数的异常百分位数以获得预期输出:
product1_id | score | out_of_set_percentile
A | 2 | 50
B | 3 | 75.
在 python 中,解决此问题的一种方法是合并表并应用 scipy.percentileofscore
:
from scipy import stats
stats.percentileofscore([1, 2, 3, 4], 3) # 75.0,
但我想要一种在 PostgreSQL 中本地执行此操作的方法
这里有一个暴力破解的方法:
select t1.product_id, t1.score,
avg( (t2.score <= t1.score)::int ) as ratio
from t1 cross join
t2
group by t1.product_id, t1.score;