SQL - 根据客户支出计算百分位数
SQL - calculate percentile based on customer spend
我必须根据客户支出计算前 33% 的客户、中等的 33% 客户和低 33% 的客户。我有客户 ID 和他们的支出列,我需要在计算谁是前 33% 的客户等之后添加新列作为最高支出者、中等支出者和低支出者。
感谢任何帮助。
谢谢
我更喜欢使用 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()
window 功能。我更喜欢更明确地进行计算,以便更好地控制平局时发生的情况。使用 rank()
所有花费相同的客户都在同一组中。
我必须根据客户支出计算前 33% 的客户、中等的 33% 客户和低 33% 的客户。我有客户 ID 和他们的支出列,我需要在计算谁是前 33% 的客户等之后添加新列作为最高支出者、中等支出者和低支出者。
感谢任何帮助。
谢谢
我更喜欢使用 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()
window 功能。我更喜欢更明确地进行计算,以便更好地控制平局时发生的情况。使用 rank()
所有花费相同的客户都在同一组中。