0

我有一个包含客户 ID 和客户支出的客户数据集。我需要根据客户发送将客户数据集分成 3 组(高消费客户、中消费客户、低消费客户)。我尝试使用 RANK 和 Partitio,但我无法给出组数(3)。有没有其他方法可以用 Teradata 做到这一点。如果有 9 个客户,我需要先按花费的金额对他们进行排序,然后将他们分成 3 组,并计算每个组下有多少客户(3)。还要确定每个组下花费金额的最小值和最大值

比如说,客户 F、G、我花了 9 美元到 12 美元,属于高消费 客户 A、B、D 花了 4 美元到 8 美元,中等消费 客户 C​​、E、H 花了 1 美元到 3 美元,是在低支出下

输出应该是 GROUP(1,2,3) ;#Cuts(3,3,3); Min_Spend($9,$4,$1); MAX_SPEND($12,$8,$3)

4

1 回答 1

1

有一个名为 QUANTILE 的旧函数,但您最好将其替换为符合标准 SQL 的语法:

3 * (RANK() OVER (ORDER BY spend) - 1) / COUNT(*) OVER() AS Q

这为每个组分配了一个 0 到 2 之间的数字,您可以轻松地将其包装在派生表中并在其上添加聚合。

于 2017-01-23T21:52:25.870 回答