我有这样的表,代表一个成员在一个月内买了一个产品。本月是201501至201612。 我想得到一个包含两列的新表:一个是从201501到201612的月份,另一个是count(distinct member_srl)作为member_rolling,它来自该月的前12个月的记录。 例如,新表的一个记录是“201605 123456”,数字123456是月份> ='201505'和月<的条件下的计数(distinct member_srl)。 '201605'。 那么如何以一种简单的方式快速实现这一目标呢?
member_srl month
21197731 201501
14353419 201509
42129336 201605
10599714 201611
16162595 201501
50487249 201601
14899586 201604
29611434 201607
15374407 201608
14479686 201501
1621671 201502
20814896 201512
8185190 201501
57833156 201601
5215620 201503
60407250 201602
3510594 201501
25221577 201611
2120126 201512
答案 0 :(得分:0)
你应该自己加入桌子
在月份栏中加入您想要的12个月范围
然后在相关专栏上进行汇总
类似的东西:
SELECT t1.id AS id, COUNT(DISTINCT t2.member_srl) AS member_srl_distinct_count
FROM test t1 JOIN test t2
ON t1.id= t2.id OR t1.id=(t2.id-1) OR t1.id=(t2.id-2) ...
GROUP BY t1.id;
在此示例中,我使用INT列(id)作为月份列,因此您需要将月份列投射到日期,以便能够向其添加/减少月数