我正在尝试找到将数据分组的最佳方法,例如五分位数(5个分组)。我将使用此SQL为SSRS报告返回数据。
我目前正在做的是在名为五分位数(客户ID、客户支出和添加行数)的临时表中选择3列。
数据按客户支出排序,从高到低。
-编辑-
不太确定我是否清楚,但通过按客户支出订购临时表,当我将其分解为组时,Q1是最高的支出者,依此类推,Q5是我的最低支出者。
然后我使用下面的case语句将它们分组为5个。[tmp]是我的临时表五分位数的别名,因为本例部分在第二个select语句中。
CASE
WHEN tmp.Row_number <= ((SELECT COUNT (*) FROM #quintiles)/5)
THEN 'Q1'
WHEN tmp.Row_number BETWEEN ((SELECT COUNT (*) FROM #quintiles)/5) AND ((SELECT COUNT (*) FROM #quintiles)*2/5)
THEN 'Q2'
WHEN tmp.Row_number BETWEEN ((SELECT COUNT (*) FROM #quintiles)*2/5) AND ((SELECT COUNT (*) FROM #quintiles)*3/5)
THEN 'Q3'
WHEN tmp.Row_number BETWEEN ((SELECT COUNT (*) FROM #quintiles)*3/5) AND ((SELECT COUNT (*) FROM #quintiles)*4/5)
THEN 'Q4'
WHEN tmp.Row_number > ((SELECT COUNT (*) FROM #quintiles)*4/5)
THEN 'Q5'
END
这在目前是可行的,并且确实使客户群恢复到5人一组。我不能只将总数除以5,就好像有奇数个客户,我会在每组中得到0.5个客户!
我只是觉得这不是解决问题的最好方法。