题目
有一张充值表T1229,先需要根据财务的需求,根据充值日期、有效天数和充值金额分摊到2020年最后一天,即2020年12月31日。 先举例测试数据5条,如下:
需要得到如下的表,即在上表的基础上增加两列分摊金额和剩余金额。分摊金额时,包括充值日期和2020年12月31日这两天,即包括头尾日期。
得到的结果如下:
请问这个sql如何写?谢谢!
解释:例如2020-09-10这天充值了2000元,从2020-09-10到2020-12-31日这一天总共有113天,实际有效期为240天,那么到2020-12-31日这一天,需要分摊这2000元的金额计算方式为:2000/240*113=941.6629。如果有效天数小于到2020-12-31日这天的天数,那么就全部分摊。
测试数据
CREATE TABLE T1229
(
订单号 VARCHAR(10),
充值日期 DATE,
充值金额 MONEY,
充值产品 VARCHAR(100),
有效天数 INT
)
INSERT INTO T1229 VALUES('1001','2020-07-01',500.00,'初一数学提高班',90)
INSERT INTO T1229 VALUES('1002','2020-08-04',1000.00,'成人英语口语突破班',30)
INSERT INTO T1229 VALUES('1003','2020-09-10',2000.00,'初三数学提高班',240)
INSERT INTO T1229 VALUES('1004','2020-11-15',3000.00,'高三语文作文提高班',360)
INSERT INTO T1229 VALUES('1005','2020-12-20',2000.00,'高一物理精讲班',60)
参考答案
应读者的要求,我将参考答案公布了,有需要的同学可以在下方公众号「数据前线」(非本号)后台回复关键字:1229,即可获取。还是建议先独立答题~
数据前线