我有一个零售商及其总销售额的清单。我想根据它们的总销售额将它们分为4类。我想证明10%的零售商覆盖了70%的销售额。
在下面的示例中,我试图将零售商划分为4个分位数。 在下面的示例中,所有10个零售商的总销售额为4500。为了将这些零售商划分为4个分位数,我按销售额从高到低对数据进行了排序,并为其分配了分位数。
每个分位数中零售商的销售总额约为4500/4 = 1100。
如何在sql中复制此逻辑?
以下是示例数据:-
答案 0 :(得分:1)
如果我理解正确,则可以使用累积和和一些算术运算。我想这就是您想要的。
select t.*,
ceiling(running_total * 4.0 / total_total)
from (select t.*, sum(total) over (order by total desc) as running_total,
sum(total) over() as total_total
from t
) t