SQL-根据客户支出计算百分比

时间:2019-01-10 18:00:09

标签: sql percentile

我必须根据客户支出来计算前33%的客户,中33%的客户和低33%的客户。我有客户ID和他们的支出列,在计算出谁是前33%的客户等等之后,我需要添加新列作为最高支出者,中支出者和低支出者。

感谢您的帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

我更喜欢使用rank()row_number()进行计算:

select t.*,
       (case when rank() over (order by spend) <= 0.33 * count(*) over ()
             then 'low'
             when when rank() over (order by spend) <= 0.67 * count(*) over ()
             then 'medium'
             else 'high'
        end) as spend_group
from t;

您还可以使用ntile()窗口功能。我希望更明确地进行计算,以便更好地控制发生平局时的情况。使用rank(),所有支出相同的客户都在同一组中。