我有一个月度服务,每个月给客户30分钟的使用时间,我需要统计他们的使用量并按月分组,但不确定最好的处理方式,因为开始日期可能是一个月的任何一天。
我应该按比例分摊吗?转换为完整的月份或计算天数?
有没有一种理想的方法来统计这一点?假设他们每个月有30分钟的使用时间,所以我想统计一下那个“月”使用了多少分钟。
假设有一个已用分钟表,订阅的开始日期是2019-06-13 00:00:00
minutes_used_table:
Userid MinutesUsed Date
1 5 2019-06-19
1 6 2019-06-23
1 8 2019-06-28
1 15 2019-07-05
1 3 2019-07-12
1 8 2019-07-19
1 5 2019-08-14
1 3 2019-08-22
1 1 2019-08-26
1 2 2019-09-13或者,我是否应该按比例计算,而不是以30天为增量进行跟踪,如果从6月13日开始,我是否应该只计算从开始日期到月底的天数,无论是哪一天,然后是从月初到开始日期的天数?
想知道什么是最有意义的,以及如何执行它?
发布于 2020-01-04 18:52:36
使用
GROUP BY DATEDIFF(`Date`, @starting_date) DIV @period_length在您的特定情况下,它将是
GROUP BY DATEDIFF(`Date`, '2019-06-13 00:00:00') DIV 30发布于 2020-01-04 15:44:51
从编码的角度来看,为用户找到第一个日期,从日期中减去它,并计算30天的周期数,这并不是什么大问题。但这在未来将很难支持,并且此解决方案将有许多角落案例:例如,某人在1月20日首次开始使用产品,在使用了一个月后,已经闲置了一段时间,并在4月5日返回。这种情况的正确开始日期是什么?
所以我建议使用日历月份。并且可以根据剩余天数减少第一个月的限制,或者甚至在第一个月给出完整的试用期,因为用户有能力花费30分钟。
https://stackoverflow.com/questions/59588835
复制相似问题