sql自关联-下单用户随着月份流逝的用户粘性

解释说明

第一行数据代表的含义:首次下单在2016-05月的用户数总共有2943人,这2943个用户在2016-06月还有766人下单,这2943个用户在2016-07月还有526人下单,以此类推
第二行数据代表的含义:首次下单在2016-06月的用户数总共有5091人,这5091个用户在2016-07月还有1267人下单,这5091个用户在2016-08月还有999人下单,以此类推

非真实数据

上面的数据可以通过sql自关联实现

准备数据

准备如下表结构的数据

随机抽取某用户A看下数据表现

 memberidcrt_dateis_fst_ordorderno
1A2017/4/301daaae69f071
2A2017/5/105dec7096b02
3A2017/5/40b13be6e2dd3
4A2017/10/70f1029437794
5A2017/10/7020440f144c5
6A2017/10/2405a45f183836
7A2017/10/240ddc5a008947
8A2017/11/1708ce7aa2f658
9A2017/11/170026661cdac9
10A2017/12/609277abcbab10
11A2017/12/60e5b4ab425611
12A2017/12/804a2aa7cc5f12
13A2017/12/8011450fc58413
14A2017/12/2005d0c36c56814
15A2017/12/200be17780f0d15
16A2017/12/210be2ddece8e16
17A2017/12/250c2bb51839f17
18A2018/1/50300457ac6818
19A2018/1/50a107ff5fbf19
20A2018/1/1007c9b0be26d20
21A2018/1/100e5f4966d4721
22A2018/1/28036d7a56bb722
23A2018/1/310532fe5206123
24A2018/2/50d4c111181c24
25A2018/2/2701c2677374925
26A2018/2/270371a8a6d8826
27A2018/3/150503b999fef27
28A2018/5/1400d867e44f928
29A2018/5/1407b0401224629
30A2018/8/11032744e3b0630
31A2018/9/104f62f99ea731
32A2018/9/20e6545af0ae32
33A2018/11/50e6a0c8d85033
34A2018/11/120561a9635ad34
35A2018/11/2405292e1b11e35

数据解释:用户A首次下单时间在2017-04月,is_fst_ord标记1,其他下单数据都是0,该用户总共有35条下单数据,近一年的下单时间分别在2017-04、2017-05、2017-10、2017-11、2017-12、2018-01、2018-02、2018-03

即数据表现如下:

自关联

1、首次下单记录做主表

2、所有下单记录做次表

3、将1和2通过会员进行关联后,明细数据如下

dif_mth:每笔订单下单时间与首次下单时间的月份差值

 memberidfst_mthmem_idmthordernodif_mth
1A2017-04A2017-04daaae69f0710
2A2017-04A2017-055dec7096b021
3A2017-04A2017-05b13be6e2dd31
4A2017-04A2017-10f10294377946
5A2017-04A2017-1020440f144c56
6A2017-04A2017-105a45f1838366
7A2017-04A2017-10ddc5a0089476
8A2017-04A2017-118ce7aa2f6587
9A2017-04A2017-11026661cdac97
10A2017-04A2017-129277abcbab108
11A2017-04A2017-12e5b4ab4256118
12A2017-04A2017-124a2aa7cc5f128
13A2017-04A2017-1211450fc584138
14A2017-04A2017-125d0c36c568148
15A2017-04A2017-12be17780f0d158
16A2017-04A2017-12be2ddece8e168
17A2017-04A2017-12c2bb51839f178
18A2017-04A2018-01300457ac68189
19A2017-04A2018-01a107ff5fbf199
20A2017-04A2018-017c9b0be26d209
21A2017-04A2018-01e5f4966d47219
22A2017-04A2018-0136d7a56bb7229
23A2017-04A2018-01532fe52061239
24A2017-04A2018-02d4c111181c2410
25A2017-04A2018-021c267737492510
26A2017-04A2018-02371a8a6d882610
27A2017-04A2018-03503b999fef2711
28A2017-04A2018-050d867e44f92813
29A2017-04A2018-057b040122462913
30A2017-04A2018-0832744e3b063016
31A2017-04A2018-094f62f99ea73117
32A2017-04A2018-09e6545af0ae3217
33A2017-04A2018-11e6a0c8d8503319
34A2017-04A2018-11561a9635ad3419
35A2017-04A2018-115292e1b11e3519

4、基于3的明细数据,限制 dif_mth <=12 ,对 fst_mth,dif_mth 进行分组,统计用户数

5、将纵表打横展示,即得到想要的数据啦

附件


SELECT
    fst_mth
    ,max(case when dif_mth=0  then num end) as mob0
    ,max(case when dif_mth=1  then num end) as mob1
    ,max(case when dif_mth=2  then num end) as mob2
    ,max(case when dif_mth=3  then num end) as mob3
    ,max(case when dif_mth=4  then num end) as mob4
    ,max(case when dif_mth=5  then num end) as mob5
    ,max(case when dif_mth=6  then num end) as mob6
    ,max(case when dif_mth=7  then num end) as mob7
    ,max(case when dif_mth=8  then num end) as mob8
    ,max(case when dif_mth=9  then num end) as mob9
    ,max(case when dif_mth=10 then num end) as mob10
    ,max(case when dif_mth=11 then num end) as mob11
    ,max(case when dif_mth=12 then num end) as mob12
from 
    (SELECT 
        fst_mth ,dif_mth,count(DISTINCT memberid) as num 
    from 
        (SELECT 
            *
            ,(cast(substr(mth,1,4) as int)-cast(substr(fst_mth,1,4) as int))*12+cast(substr(mth,6,2) as int)-cast(substr(fst_mth,6,2) as int) as dif_mth
        from 
            (SELECT
                memberid,substr(crt_date,1,7) as fst_mth 
            from dc_dev.spl_0926_t2 
            where is_fst_ord=1 
            ) a  -- 首次下单
            left join 
            (SELECT 
                memberid as mem_id,substr(crt_date,1,7) as mth,orderno 
            from dc_dev.spl_0926_t2 
            ) b on a.memberid=b.mem_id 
        ) x0
    where dif_mth <=12
    group by fst_mth,dif_mth
    ) x1 
group by fst_mth
;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值