识别趋势并使用sql进行分类

时间:2012-08-23 10:49:15

标签: sql design-patterns teradata

我有一个表xyz,有三列rcvr_id,mth_id和tpv。 rcvr_id是给客户的id,mth_id是存储月份数的列(mth_id计算为(2012-1900)* 12 + 1,2,3 ..(取决于月份)。例如2011年12月将有day_id为1344,2012年1月1345等.Tpv是一个显示客户交易金额的变量。

Example table

rcvr_id mth_id tpv

1       1344   23
2       1344   27
3       1344   54
1       1345   98
3       1345   102
          .
          .
          .
so on

P.S if a customer does not have a transaction in a given month, his row for that month wont exist.

现在,问题。根据1327至1350个月的交易,我需要将客户归类为稳定或零星的。

以下是说明。

This pattern is for 1 customer .. i have millions of customers

以上图片适用于1位客户。我有数百万客户。

我该怎么做?我不知道如何识别sql的趋势...或者更好的方法如何尽可能地做到这一点。

我正在研究teradata。

好的,我已经找到了如何获得标准偏差。现在重要的问题是:我如何设置自己的标准偏差限制?我不能随便说“如果标准开发率超过40%,他就是零星的其他稳定”。我想到了计算所有客户的标准差的平均值,如果它高于那个,那么他就是零星的稳定。但我觉得可能有更好的逻辑

1 个答案:

答案 0 :(得分:3)

我建议使用STDDEV_POP函数 - 值越高表示值的变化越大。

select 
rcvr_id, STDDEV_POP(tpv)
from yourtable
group by rcvr_id

STDDEV_POPStandard Deviation

的功能

如果这没有足够的区别,您可能需要查看回归函数和方差。