计算十分位数

  • 本文关键字:十分 计算 sql presto
  • 更新时间 :
  • 英文 :


我需要在presto中计算销售数据的十分位数,我正在使用下面提到的查询来获取它。

ceil((sum(sales) over(order by sales asc rows between unbounded preceding and current row )/sum(sales) over())*10) sales_c12_decile

我对这段代码面临的问题是,它抛出十分位数值 11 以获得最大销售价值。 这可能会影响较低销售值的十分位数。

有人可以告诉我我错过了什么吗? 提前谢谢。

我怀疑这是数值精度的问题。ceil()逻辑应该是做你想做的事;但是您的问题表明存在数值精度问题。

一种解决方法是通过添加一个小偏移来调整计算:

ceil(sum(sales) over (order by sales asc rows) * 10.0 /
(sum(sales) over () + 0.0001)
) as sales_c12_decile

这应防止任何舍入问题影响十分位数。

相关内容

  • 没有找到相关文章

最新更新