python - 如何在 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;
推荐阅读
- python-3.x - 如何检查键是否已分配给字典?
- android - 在 Android 中使用渲染脚本计算位图的清晰度
- java - 我有 /oauth/login 的端点。我不知道它在哪个类,我该如何调试才能找到它?
- python - 自动创建多个输入并将其传递给函数
- azure - 在火花数据框中的列中重复一组字符串值
- android - 如何在 Android 中使用 Material Design 在 EditText 和 TextView 中应用 shapeAppreanace
- django - Django 聚合查询包括零计数
- ios - 如何在 swift 中创建一个 Result 类型的数组?
- html - 如何将 div 对象定位到屏幕的最左边缘?
- c# - SQL Connection(C#)-Executenonquery 需要一个打开且可用的连接。连接当前状态为关闭