Teradata 中上层客户
Teradata Top-middle-bottom customers
我有一个包含客户 ID 和客户支出的客户数据集。我需要根据客户发送将客户数据集分成 3 组(高消费客户、中等消费客户、低消费客户)。我尝试使用 RANK 和 Partitio by 但我无法给出组数 (3)。有没有其他方法可以用 Teradata 做到这一点。
如果有 9 个客户,我需要先按消费金额对他们进行排序,然后将他们分成 3 组,并计算每组(3)下有多少客户。还要确定每个组下花费金额的最小值和最大值
比如说,Cust F,G,我花了 9 到 12 美元,属于高消费
客户 A、B、D 的支出在 4 到 8 美元之间,并且处于中等支出水平
客户 C、E、H 花费在 1 美元到 3 美元之间并且处于低花费
输出应该是
组(1,2,3); #客户(3,3,3); Min_Spend($9,$4,$1); MAX_SPEND($12,$8,$3)
有一个名为 QUANTILE 的旧函数,但您最好将其替换为符合标准 SQL 的语法:
3 * (RANK() OVER (ORDER BY spend) - 1) / COUNT(*) OVER() AS Q
这会为每个组分配一个介于 0 到 2 之间的数字,您可以轻松地将其包装在 Derived Table 中并在其上添加聚合。
我有一个包含客户 ID 和客户支出的客户数据集。我需要根据客户发送将客户数据集分成 3 组(高消费客户、中等消费客户、低消费客户)。我尝试使用 RANK 和 Partitio by 但我无法给出组数 (3)。有没有其他方法可以用 Teradata 做到这一点。 如果有 9 个客户,我需要先按消费金额对他们进行排序,然后将他们分成 3 组,并计算每组(3)下有多少客户。还要确定每个组下花费金额的最小值和最大值
比如说,Cust F,G,我花了 9 到 12 美元,属于高消费 客户 A、B、D 的支出在 4 到 8 美元之间,并且处于中等支出水平 客户 C、E、H 花费在 1 美元到 3 美元之间并且处于低花费
输出应该是 组(1,2,3); #客户(3,3,3); Min_Spend($9,$4,$1); MAX_SPEND($12,$8,$3)
有一个名为 QUANTILE 的旧函数,但您最好将其替换为符合标准 SQL 的语法:
3 * (RANK() OVER (ORDER BY spend) - 1) / COUNT(*) OVER() AS Q
这会为每个组分配一个介于 0 到 2 之间的数字,您可以轻松地将其包装在 Derived Table 中并在其上添加聚合。