step1: 统计9月期间是会员的所有用户的均摊收入;

step2: 9月期间是会员的所有用户中,若大会员生效开始日期小于9月1号将start_date设置为9月1号,否则,start_date等于begin_date。若大会员生效结束日期大于9月30号将stop_date设置为9月30号,否则,stop_date等于end_date。(目的在于统计的是9月份b站会员的收入);

step3:stop_date减start_date即为每个大会员9月份会员生效的天数,乘以均摊收入即为每个用户9月份收入,对所有用户收入求和,即为9月b站会员费的收入。

SELECT round(sum((DATEDIFF(stop_date, start_date)+1)*avg_revenue), 2) as revenue

FROM(

SELECT *,

IF(begin_date<='2021-9,1', date('2021-9,1'), begin_date) as start_date,

IF(end_date>='2021-9-30',date('2021-9-30'), end_date) as stop_date,

pay_amount / days as avg_revenue

FROM detail_list_tb

WHERE (begin_date<'2021-9-1' and end_date>'2021-9-1')

OR begin_date BETWEEN '2021-9-1' AND '2021-9-30'

)t;