我有一组订阅,在此期间购买第一个项目时,每个订阅持续30天
PID | Date Purchased | User ID | Owner ID
=======+========================+================+==============
1 | 1/1/2011 | 1 | 1
2 | 2/1/2011 | 1 | 1
3 | 19/1/2011 | 1 | 1
4 | 3/2/2011 | 1 | 1
5 | 5/1/2011 | 2 | 1
6 | 9/2/2011 | 2 | 1
我有一个包含结算周期的表格
Owner ID | DATEBEGIN | DATEEND
=========+==================+============
1 | 1/2/2011 | 2/3/2011
因此,对于每个所有者ID,我需要将句点分类为dateend
值之前的30天间隔。我需要根据第一次购买时的唯一用户ID计算购买量,并在接下来的30天内“预订”(在此期间不计算),并在此之后计算第一次。
因此,例如2011年1月1日的PID(PurchaseID)1,接下来的30天“预订”,因此忽略它们。 但这属于之前的结算周期,剩余部分将进入下一个结算周期 所以在第一个中是3/30,在下一个中是27/30,(2011年2月1日,2011年1月19日的销售被忽略,但是在2011年3月2日没有预订所以它被计算在内)< / p>
Owner ID | User ID | PeriodBegin | PeriodEnd | Usage | Comment
===========+===========+=====+===========+===============+=========+================
1 | 1 | 3/12/2010 | 1/1/2011 | 3/30 |
1 | 1 | 2/1/2011 | 1/2/2011 | 27/30 |
1 | 1 | 2/2/2011 | 4/3/2011 | 29/30 |
1 | 1 | 5/3/2011 | 4/4/2011 | 1/30 |
1 | 2 | 2/2/2011 | 4/3/2011 | 25/30 |
1 | 2 | 5/3/2011 | 4/4/2011 | 5/30 |
最终我将这些汇总到下一个
Owner ID | PeriodBegin | PeriodEnd | Usage |
==========+=================+==============+==========+
1 | 3/12/2010 | 1/1/2011 | 3/30 |
1 | 2/1/2011 | 1/2/2011 | 27/30 |
1 | 2/2/2011 | 4/3/2011 | 54/30 |
1 | 5/3/2011 | 4/4/2011 | 6/30 |
所以我一直试图弄清楚如何告诉MySQL在第一次购买后的30天内忽略这些值,然后在“预订”期结束后计算这些值。
为了更容易理解,我已经对mp3订阅进行了类比。第一个表可以是从唱片公司购买到分销商(每个分销商都有自己的所有者ID和每个最终用户的多个帐户(用户ID)。 所以在他们第一次购买mp3时,他们有30天的订阅服务来下载无限的mp3。最后一个表是他们的计费时间表。因此,如果他们在结算期结束前一天购买一首歌,那么收取一整天的mp3是不公平的,所以它必须分成几部分,并在下个月收取余额。