sql—有没有一种方法可以在大查询的滚动窗口上使用percentile_cont()函数计算百分位数?

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

我有一个包含以下列的数据集
城市
用户


收益
理想情况下,我想从百分位数(收益,0.5)中计算出第50%(按城市顺序划分,按月份范围介于前一行和当前行之间)。但是大查询不支持百分位连续的窗口框架。如果有人能解决这个问题,请帮助我。

hc8w905p

hc8w905p1#

如果我理解正确,您可以聚合到一个数组中,然后取消嵌套:

select t.*,
       (select percentile_cont(earning) over ()
        from unnest(ar_earnings) earning
        limit 1
       ) as median_2months
from (select t.*,
             array_agg(earnings) over (partition by city
                                       order by month
                                       range between 1 preceding and current month
                                      ) as ar_earnings
      from t
     ) t;

您没有提供示例数据,但此版本假定 month 表示月份的递增整数。您可能需要调整 range 取决于类型。

相关问题