任意两个相差k月的日期之间(包含这两个日期)新增的账户数

问题如下:

a.[基本信息表.开立日期]升序排序
b.每个[基本信息表.开立日期]为起始时间,+K*30-1(1/2/3/4)天的时间,设置时间区间(闭区间)
例如:20150701-20170730(包含首尾时间)
c.统计[基本信息表.开立日期]在b时间区间的[基本信息表.账户编号]观测数
(k=1/2/3/4分别计算)
举例:K=1 5个开立账户的开立时间分别为20190801,20190810 20191001 2019110 20191111
20190801为起始时间 统计【20190801-20190830)】时间段开立的账户数 2
20190810为起始时间 统计【20190810-20190908)】时间段开立的账户数 1
20191001为起始时间 统计【20191001-20191030)】时间段开立的账户数 1
20191101为起始时间 统计【20191101-20191130)】时间段开立的账户数 2
20191111为起始时间 统计【20191111-20191210)】时间段开立的账户数 1

备注有偿面试题 最后一道没有做出了 有没有帮帮我 可以评论后加我vx 解决后 可以付费小偿 我发你具体的题目 这里发不了截图

1

用SQL 写

select a.PA01AI01, PD01AR01,
(select count(*) from 22_pd01a_csv where PA01AI01 = a.PA01AI01 and PD01AR01 >= a.PD01AR01 and PD01AR01 <= date_add(a.PD01AR01, interval (1*30-1) day)) as CT_1_02_1_MX,
(select count(*) from 22_pd01a_csv where PA01AI01 = a.PA01AI01 and PD01AR01 >= a.PD01AR01 and PD01AR01 <= date_add(a.PD01AR01, interval (2*30-1) day)) as CT_1_02_2_MX,
(select count(*) from 22_pd01a_csv where PA01AI01 = a.PA01AI01 and PD01AR01 >= a.PD01AR01 and PD01AR01 <= date_add(a.PD01AR01, interval (3*30-1) day)) as CT_1_02_3_MX,
(select count(*) from 22_pd01a_csv where PA01AI01 = a.PA01AI01 and PD01AR01 >= a.PD01AR01 and PD01AR01 <= date_add(a.PD01AR01, interval (4*30-1) day)) as CT_1_02_4_MX
from(
    SELECT PA01AI01, PD01AR01 FROM `22_pd01a_csv` order by PA01AI01, PD01AR01
)a