从第一项开始计算,在接下来的30天内忽略计数

时间:2011-12-19 06:36:39

标签: mysql count sum conditional

我有一组订阅,在此期间购买第一个项目时,每个订阅持续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是不公平的,所以它必须分成几部分,并在下个月收取余额。

0 个答案:

没有答案