我有一个列 ID、Start_date、End_date、Duration、Value 的成员资格表
ID | Start_date | End_date | Duration | Value |
1 | 2012-08-12 |2012-09-12| 30 | 10 |
2 | 2011-05-22 |2013-05-22| 720 | 2000 |
等等
我想把它变成两列,一个有日期,一年中的每一天,另一个有当天所有会员价值/持续时间的总和。
我最终需要将其转换为每月价值,让我清楚地了解未来的收入预期,这要归功于运行会员资格。
现在我做了类似的事情
select
sum(if("2012-01-01" between start_date and end_date, total_value/duration, null)) as "2012-01-01",
sum(if("2012-01-02" between start_date and end_date, total_value/duration, null)) as "2012-01-02",
[...]
sum(if("2013-12-31" between start_date and end_date, total_value/duration, null)) as "2013-12-31"
from MembershipsTable
/* 0 行受影响,1 行找到。1 个查询的持续时间:3,666 秒。*/
但我不明白如何轻松地将它们总结为每月的价值。我可以再次创建列的总和,但宁愿不必输入文字小说
运行时间不是当前格式的问题
我需要形状的输出
Month | Sum |
Jan 2012 |4500 |
Feb 2012 |4215,91 |
其中,总和是与该期间相交的所有会员的总和,按每天的价格 * 会员在该月拥有的天数计算。
因此,如果会员资格于 11 月 12 日开始,12 月 11 日结束,持续时间为 30,价值为 300,我想将 300/30*daysInNov 添加到 11 月,同样适用于 12 月,给我 +190 的 11 月,+110 的十二月我需要以这种方式计算所有成员的总和。
有人有什么主意吗?