如何从非正态分布中得到百分位数?

qaxu7uf2  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(513)

我有一个100分的分布箱,每个箱有不同的基于评分模式的分布
现在我有一个表,表中有subject id和数组列,其中列有在各个bin中得分的学生数,如下所示:

<26 <41 <61 <71 <81 <91 <101

4   15  11  14  18  19  28

如何从这个分布中得到第25、50、75和95百分位分数?分布可能不正常。
既然timescaledb还不支持连续聚合,那么是否可以在timescaledb中进行聚合(实际上我需要把它放在这里)?

hrirmatl

hrirmatl1#

您可以通过这种方式取消提取数据并提取信息。当然,您没有足够的信息来真正重新生成原始数据。以下仅使用一个小于bin max的值:

select generate_series(1, num, 1) as n, v.val
from t cross join lateral
     (values ("<26", 25), ("<41", 40), . . .  ) v(num, val);

然后您可以在此基础上运行函数,例如:

select percentile_cont(0.5) within group (order by val)
from (select generate_series(1, num, 1) as n, v.val
      from t cross join lateral
           (values ("<26", 25), ("<41", 40), . . .  ) v(num, val)
     ) gs;

在学生阶段,你会得到更好的原始数据。我想你已经知道了。

相关问题