【发布时间】:2021-01-06 21:30:37
【问题描述】:
我有一个 postgresql 表“样本”,其中包含一个由 200 个整数组成的数组的“强度”列。我想为数组的每个元素计算一堆样本的中值,例如强度的中值[1]、强度的中值[2]、...、强度的中值[200]。如果列由单个整数组成,那么使用 percentile_disc 函数很容易:
select percentile_disc(0.5) within group (order by intensity) from samples where...
但是,由于我的列由一个数组组成,所以这不起作用。运行代码给出了强度 [1] 的正确答案,但所有其他值都是错误的(我怀疑代码只是从具有强度 [1] 中值的样本中提取了全部 200 个整数)。
我可能会使用“for”循环来获取数据,但必须有一个更优雅的解决方案,使用 unnest 或类似的东西......
【问题讨论】:
-
怎么样?:
select percentile_disc(0.5) within group (order by i) from (select unnest(array[1,2,3,3,4,5]) AS i) AS a; percentile_disc ----------------- 3
标签: sql arrays postgresql median