2017-01-23 72 views
0

我有一個客戶數據集,包含客戶ID和客戶支出。我需要根據客戶發送(高消費客戶,中等消費客戶,低消費客戶)將客戶數據集分爲3組。我嘗試使用RANK和Partitio,但我無法給出組數(3)。有沒有其他方式可以與Teradata一起完成此任務? 如果有9個客戶,我需要先按花費的數量對他們進行排序,然後將他們分成3組,並計算每個組下有多少客戶(3)。同時確定每組花費的金額的最小值和最大值Teradata頂級中低級客戶

說,Cust F,G,I花費在9美元到12美元之間,並且花費很高 Cust A,B,D花費在4美元到8美元之間並且在該介質花費 Custs C,E,H $ 1〜$ 3之間花費,且正在進行低花費

輸出應該 GROUP(1,2,3); #Custs(3,3,3); Min_Spend($ 9 $ 4,$ 1); MAX_SPEND($ 12 $ 8 $ 3)

回答

1

有一個名爲QUANTILE老功能,但你更好地與標準兼容SQL語法替換:

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

這將0之間的數字2到各組,可以輕鬆將其包裝在派生表中並在其上添加聚合。

+0

Dnoeth,這完美的作品。這將客戶羣和分配的隊伍分開。我將它加載到一個易失性表中並執行必要的聚合。非常感謝你。不僅如此,您對teradata的所有答案都非常有幫助。 – Ramya

+0

我在這裏有另一種情況。基本上,我需要對3個產品組中的每個產品組的客戶進行排名,以及高費用客戶,中低消費客戶。我一次完成了所有事情,並使用小組和病例報告。但是,當我將每個排名的最低和最高銷售額(按銷售額排名 - 應該是產品特定的)值拉低時,所有產品組中的中間層最低和最高值都是相同的,但我希望他們都獨立排名。任何關於此的信息都將受到讚賞 – Ramya

+1

@ user1806980:您可能需要將'PARTITION BY product_group'添加到'OVER' – dnoeth