题解 | #小破站会员2021年9月收入#
小破站会员2021年9月收入
http://www.nowcoder.com/practice/9072394169054c278518b1872cb72213
分四种情况讨论:
第一种是 开始日期小于2021-9-1号 结束日期大于2021-9-30号的
第二种是 开始日期小于2021-9-1号 结束日期在2021-9-1号和2021-9-30号之间的
第三种是 开始日期大于2021-9-1号 结束日期小于2021-9-30号的
第四种是 开始日期大在2021-9-1号和2021-9-30号之间的, 结束日期大于2021-9-30号的
select round(sum(case when begin_date<='2021-09-01' and end_date>='2021-09-30'
then 30*pay_avg
when begin_date<='2021-09-01' and end_date<='2021-09-30' and end_date>='2021-09-01'
then (datediff(end_date,'2021-09-01')+1)*pay_avg
when begin_date>='2021-09-01' and end_date<='2021-09-30'
then pay_amount
when begin_date>='2021-09-01' and begin_date<='2021-09-30' and end_date>='2021-09-30'
then (datediff('2021-09-30',begin_date)+1)*pay_avg
else 0
end
),2
)
from (
select *,pay_amount/days as pay_avg
from detail_list_tb
) as t